利用ZXing生成和读取二维码

来源:互联网 发布:离线电子地图标注软件 编辑:程序博客网 时间:2024/05/16 09:16

在日常生活中二维码的使用非常频繁,给我们带来了极大的方便,避免了许多不必要的输入,也减少了在输入过程中的错误。

刚学完利用ZXing生成二维码的简单例子,在此给出最基本的源码,关于ZXing的jar文件,自行查找。


生成二维码的最基本代码:

import java.io.File;import java.nio.file.Path;import java.util.HashMap;import java.util.Map;import com.google.zxing.BarcodeFormat;import com.google.zxing.EncodeHintType;import com.google.zxing.MultiFormatWriter;import com.google.zxing.WriterException;import com.google.zxing.client.j2se.MatrixToImageWriter;import com.google.zxing.common.BitMatrix;import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;public class CreateQRCode {public static void main(String[] args) {int width = 500;//生成图片的尺寸,单位pxint height = 500;String format = "png";//生成图片的格式String content = "自己根据需求修改内容";/** * 定义相关参数 */Map hints = new HashMap();hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");//内容字符编码hints.put(EncodeHintType.ERROR_CORRECTION,ErrorCorrectionLevel.M);//二维码容错级别hints.put(EncodeHintType.MARGIN, 5);//生成图片内容据图片边沿尺寸try {/** * 第二个参数是生成的二维码的类型 * 在此使用QRCode,除此之外还有许多其他标准 */BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height,hints);Path path = new File("D:/guyouda.png").toPath();//生成的图片存储路径MatrixToImageWriter.writeToPath(bitMatrix, format, path);} catch (Exception e) {e.printStackTrace();}}}

读取二维码的最基本代码:

import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.util.HashMap;import java.util.Map;import javax.imageio.ImageIO;import com.google.zxing.BinaryBitmap;import com.google.zxing.EncodeHintType;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 ReadQRCode {public static void main(String[] args) {/** * 读取时的参数设置 */Map hints = new HashMap();hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");try {//图片文件位置File file = new File("D:/guyouda.png");BufferedImage image = ImageIO.read(file);BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image)));MultiFormatReader reader = new MultiFormatReader();Result result = reader.decode(bitmap,hints);System.out.println("Result:"+result.toString());System.out.println("Text:"+result.getText());System.out.println("format:"+result.getBarcodeFormat());} catch (NotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}



生成的二维码:



二维码读取结果:









0 0