本文主要时通过Java语言,来实现二维码生成与获取,涉及zxing(谷歌家的)的两个核心jar包。
二维码的生成
package com.epoch.ccpayment.utils;
import java.io.File;
import java.nio.file.Path;
import java.util.HashMap;
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.qrcode.decoder.ErrorCorrectionLevel;
public class CreateQR {
public static void main(String[] args) {
create_code();
}
public static void create_code() {
//宽
int width = 300;
//高
int height = 300;
//图片格式
String format = "png";
//内容
String content = "http://www.epoch.cn/";
HashMap<EncodeHintType, Comparable> hm = new HashMap<EncodeHintType, Comparable>();
//1设置编码格式
hm.put(EncodeHintType.CHARACTER_SET, "UTF-8");
//2设置四周的边:0-7个等级
hm.put(EncodeHintType.MARGIN, 2);
//纠错等级(容错率):Q、M、L、H
hm.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
//产生二维码
try {
BitMatrix bm = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hm);
Path file = new File("D:\\QRCodeImage\\qr.png").toPath();
MatrixToImageWriter.writeToPath(bm, format, file);
System.out.println("二维码创建成功!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
解析二维码的内容
package com.epoch.ccpayment.utils;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import com.google.zxing.Binarizer;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.NotFoundException;
import com.google.zxing.Result;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.common.HybridBinarizer;
public class ReadQR {
public static void main(String[] args) throws NotFoundException, IOException {
readZxing();
}
private static void readZxing() throws IOException, NotFoundException {
MultiFormatReader read = new MultiFormatReader();
File file = new File("D:\\QRCodeImage\\qr.png");
BufferedImage image = ImageIO.read(file);
Binarizer binarizer = new HybridBinarizer(new BufferedImageLuminanceSource(image));
BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);
Result res = read.decode(binaryBitmap);
System.out.println(res.toString());
System.out.println(res.getBarcodeFormat());
System.out.println(res.getText());
}
}
本文所涉及到zxing的两个核心jar包,一个是core - 3.3.2.jar;另一个是javase-3.3.2.jar,亲测可用
core3.3.2 点击此处直接获取core3.3.2核心的jar包
<!-- https://mvnrepository.com/artifact/com.google.zxing/core -->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.2</version>
</dependency>
javase3.3.2 点击此处直接获取javase3.3.2核心的jar包
<!-- https://mvnrepository.com/artifact/com.google.zxing/javase -->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.3.2</version>
</dependency>