二维码(带Logo)加密解密-QRCode方式

二维码加密解密-QRCode

QRCode生成和解析二维码的流程步骤在代码里面方便理解。

加密工具类

/**  
 * Copyright © 2020wangylCompany. All rights reserved.
 *
 * @Title: QRCodeUtil.java
 * @Prject: MyTestDemo
 * @Package: qrcode
 * @Description: TODO
 * @version: V1.0  
 */

package qrcode;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;

import javax.imageio.ImageIO;

import com.swetake.util.Qrcode;

import jp.sourceforge.qrcode.QRCodeDecoder;
import jp.sourceforge.qrcode.data.QRCodeImage;



public class QRCodeUtil {
   
	 //加密:文字信息----------》二维码
	/**
	 * 
	 * @Title: encoderQRCode
	 * @Description: TODO
	 * @param content	二维码的内容
	 * @param imgPath	二维码的生成路径	src/二维码.png
	 * @param imgType	二维码的图片格式	png
	 * @param size		二维码的边长(二维码是正方形,所以只需要边长尺寸即可)
	 * @return: void	由于二维码生成就是二维码直接输出了,可以不用返回值,或者可以添加boolean返回值
	     
	     
	     这里暂时不处理异常,主要生成二维码
	 
	 * @throws IOException 
	 */
	
	public void encoderQRCode(String content,String imgPath,String imgType,int size) throws IOException{
   
		/**
		 * API
		 * 生成图片需要依赖 ImageIO 里面的  write 方法
		 * ImageIO.write(im, formatName, output)
		 * im			RenderedImage
		 * formatName	格式名字
		 * output		文件类型,所以需要与现有文件
		 * 
		 * 
		 * RenderedImage 是个接口,不能直接new对象,只能通过他的实现类BufferedImage来简历对象
		 * (ctrl + t  选中RenderedImage,可以看到关系里面有BufferedImage是RenderedImage的一个实现类)
		 * BufferedImage类型可以代表内存中的一张图片,内存中产生图片以后直接输出到硬盘即可
		 * 所以现在需要在内存中产生一张图片,由于产生过程相对比较复杂,这里单独创建一个方法qRCodeCommon()来产生img对象
		 *qRCodeCommon()用来产生图片,返回值必定是BufferedImage类型
		 *
		 */
//		RenderedImage
//		BufferedImage bufImg = qRCodeCommon(content,imgType,size);//二维码生成版(初始版本)
		BufferedImage bufImg = qRCodeCommon2(content,imgType,size);//二维码生成版(加logo)
		File file = new File(imgPath);
		ImageIO.write(bufImg, imgType, file);
		
	}


	/**
	 * 
	 * @Title: qRCodeCommon
	 * @Description: TODO	二维码生成版(初始版本)
	 * @param content	二维码中的隐藏信息类容
	 * @param imgType	图片的格式		png
	 * @param size		二维码的尺寸	边长
	 * @return			返回生成的图片对象
	 * @return: BufferedImage
	 
	 * @throws UnsupportedEncodingException 
	 */
	private BufferedImage qRCodeCommon(String content,String imgType,int size) throws UnsupportedEncodingException {
   
		//代码顺序调整前,注释未变化--------------------------------------------
//		BufferedImage bufImg =null;
//		/**
//		 * BufferedImage	内存中的图片
//		 * 正常情况需要对象直接new 就可以,但是bufImg = new BufferedImage()不可以,说明这个class没有无参构造
//		 * 查看源码,发现没有无参构造但是有有参构造,选择合适的有参构造
//		 * new BufferedImage(width, height, imageType)
//		 * width		int		size
//		 * height		int		size
//		 * imageType	int		BufferedImage.TYPE_INT_RGB
//		 * 
//		 * imageType 这里或者直接写1
//		 * 美术的三原色是 红、黄、蓝 ,计算机的三原色是 red green blue 简称RGB
//		 * 
//		 * 
//		 */
//		bufImg = new BufferedImage(size, size, BufferedImage.TYPE_INT_RGB);
//		//有了图片对象后,在通过图片对象生成一个画板
//		Graphics2D graphics2d = bufImg.createGraphics();
//		//设置画板的背景色设置为白色
//		graphics2d.setBackground(Color.WHITE);
//		/**
//		 * graphics2d.clearRect(x, y, width, height);
//		 * x、y		坐标位置,0,0就是从画板的 左上角 开始
//		 * width	二维码的边长就是画板的边长
//		 * height	二维码的边长就是画板的边长
//		 */
//		graphics2d.clearRect(0, 0, size, size);//初始化画板
//		/**
//		 * 画板的背景色设置好了,画板的大小设置好了,现在开始准备画画了(画二维码)
//		 */
//		graphics2d.setColor(Color.BLACK);//设置二维码的颜色:这里设置黑色
//		/**
//		 * 剩下的就是开始话二维码
//		 * 二维码是如何画的?
//		 * 这里简述方便理解:
//		 * 		helloworld是需要转换成二维码的隐藏信息,这里将helloworld转换成二位码的像素点
//		 * 这里具体是将helloworld隐藏信息转换成了boolean数组,转换成了boolean[][]二维数组
//		 * 二维码可以是一个平面,可以看成是一个二维数组,helloworld转换的过程中,对于在映射的过程中,
//		 * 某一个点如果满足映射标记为黑色,从而整体生成了一个二维码
//		 */
//		/**
//		 * 这里需要将传进来的字符串转化成一个二位数组boolean[][]
//		 * 
//		 * 转换成二位数组的话有需要一个Qrcode对象,这里是作为一个处理器
//		 * 
//		 * qrCodeHandler这里是作为一个处理器
//		 */
//		Qrcode qrCodeHandler = new Qrcode();
//		/**
//		 * 设置二维码的排错率。L/M/Q/H 从小到大
//		 * L	7%
//		 * M
//		 * Q
//		 * H	30%
//		 * 
//		 * 排错率越高,二维码可存储的信息越少,但是对二维码清晰度要求越小(容易扫出来)
//		 * 
//		 * 这里设置一个中间值 M
//		 */
//		qrCodeHandler.setQrcodeErrorCorrect('M');
//		/**
//		 * 二维码可以存放的信息类型 		N
//		 * N	数字(只能放数字)
//		 * A	数字+A~Z
//		 * B	所有
//		 * (一般都选B)
//		 */
//		qrCodeHandler.setQrcodeEncodeMode('B');
//		/**
//		 * 二维码的尺寸
//		 * 取值范围:1~40		数字越大二维码越大
//		 * 由于我们制定了二维码的尺寸,但是这里的尺寸只能是1~40,所以超出的话会出错
//		 * 但是如果真的使用40的话,那二维码又太小了
//		 * 所以这里为了保证这里满足需求(1~40),又能保证后面的不至于二维码太小,这里自定义一个公式:
//		 * 在满足qrCodeHandler.setQrcodeVersion(size);的情况下,
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Html5-qrcode可以用于识别小二维码。Html5-qrcode是一个基于JavaScript的库,用于在网页上进行二维码扫描和识别。它允许用户使用摄像头扫描网页上的二维码,并将其解码为文本或URL。这样,用户就可以方便地识别小二维码。 使用Html5-qrcode进行小二维码的识别非常简单。首先,我们需要在网页中引入Html5-qrcode库,并创建一个用于显示扫描结果的元素。接下来,我们需要调用Html5-qrcode的API函数以开始扫描二维码。 在代码中,我们可以使用以下的示例代码来实现小二维码的识别: ``` <!DOCTYPE html> <html> <head> <title>Html5-qrcode</title> <script src="html5-qrcode.min.js"></script> </head> <body> <h1>小二维码识别</h1> <div id="qrcode"></div> <script> var qrcode = new Html5Qrcode("qrcode"); function onScanSuccess(qrCodeMessage) { alert("成功识别小二维码: " + qrCodeMessage); } function onScanFailure(error) { // 处理扫描失败的情况 } function onScanError(error) { // 处理扫描错误的情况 } qrcode.start({ facingMode: "environment" }, { qrbox: 250 }, onScanSuccess, onScanFailure, onScanError); </script> </body> </html> ``` 在上面的代码中,我们首先创建一个名为"qrcode"的div元素,用于显示二维码扫描结果。然后,我们创建一个Html5Qrcode对象,并将"qrcode"作为构造函数的参数传递进去。接下来,我们定义了三个回调函数,分别用于处理成功识别二维码的情况、扫描失败的情况和扫描错误的情况。 最后,我们调用Html5Qrcode对象的start方法,传入参数设置为使用后置摄像头进行扫描,并设置二维码框的大小为250。同时,我们将之前定义的三个回调函数作为参数传递给start方法。 这样,当用户打开该网页时,会自动启动摄像头,并进行二维码扫描。一旦成功识别到小二维码,就会触发onScanSuccess函数,并显示识别结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值