利用Java 来制作二维码和解析
首先我们要用到Zxing.jar包
创建一个maven项目添加依赖
<!-- https://mvnrepository.com/artifact/com.google.zxing/core -->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.4.1</version>
</dependency>
然后编写java代码
package com.ysh;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.pdf417.decoder.ec.ErrorCorrection;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import java.io.FileOutputStream;
import java.util.HashMap;
import java.util.Map;
public class QrDemo3 {
public static void main(String[] args) {
//定义二维码的内容参数
Map<EncodeHintType,Object> hints=new HashMap<EncodeHintType, Object>();
//设置边框距
hints.put(EncodeHintType.MARGIN,2);
//设置字符编码格式
hints.put(EncodeHintType.CHARACTER_SET,"UTF-8");
//设置容错等级 等级越高存入内容越少
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M); //以上就是设置内容参数 如果不用中文可以不用设置
try {
//设置二维码的内容
String contents="https://blog.csdn.net/qq_51939838?spm=1001.2101.3001.5343";
//第一个参数为二维码内容,第二个是二维码格式,第三四是宽高,第四是前面写的内容参数 如果无写null
BitMatrix bm = new MultiFormatWriter().encode(contents, BarcodeFormat.QR_CODE, 400, 400, hints);
//第一个参数是BitMatrix,第二个是生成图片的格式,第三个是生成文件的地址
MatrixToImageWriter.writeToStream(bm, "png", new FileOutputStream("picture\\my2.png"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
此时会生成一个二维码图片 这是我的博客地址 欢迎浏览
下面就是如何对二维码进行解析
package com.ysh;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.Result;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.common.HybridBinarizer;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
public class ReadQrDemo {
public static void main(String[] args) {
try {
MultiFormatReader formatReader = new MultiFormatReader();
//放入你要解析的二维码地址
File file = new File("picture\\myWechat.jpg");
BufferedImage image = ImageIO.read(file);
BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image)));
//定义二维码的参数 上面介绍过
Map hints=new HashMap();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
Result result = formatReader.decode(binaryBitmap, hints);
System.out.println("解析结果:" + result.toString());
System.out.println("二维码格式类型:" + result.getBarcodeFormat());
System.out.println("二维码文本内容:" + result.getText());
} catch (Exception e) {
e.printStackTrace();
}
}
}
结果
解析结果:https://blog.csdn.net/qq_51939838?spm=1001.2101.3001.5343
二维码格式类型:QR_CODE
二维码文本内容:https://blog.csdn.net/qq_51939838?spm=1001.2101.3001.5343