Java通过zxing方式实现二维码的生成与解析

本文介绍了如何在Java中利用ZXing库来生成和解析二维码。首先,通过导入ZXing的jar包,创建二维码图片并保存到D盘的2barcode文件夹下,覆盖已存在的code.png文件。接着,展示了生成的二维码示例及其在手机上扫描得到的结果。然后,文章还提及了代码执行用于解析二维码的过程。

1、生成二维码
需要导入jar包zxing
(百度云链接:https://pan.baidu.com/s/1i6PZWqT 密码:3quk)
在D盘的2barcode文件夹生成二维码图片code.png,要先建立文件夹2barcode,若code.png图片已存在则会被覆盖。

package imis.black.zxing;

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.MatrixToImageConfig;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

/**
 * 生成二维码
 * @author PC
 */
public class CreateQRCode {
    public static void main(String[] args) {
        int width=300;      //图片的宽度
        int height=300;     //图片的高度
        String format="png";    //图片的格式
        String content="有趣且认真";     //内容

        /**
         * 定义二维码的参数
         */
        HashMap hints=new HashMap();
        hints.put(EncodeHintType.CHARACTER_SET,"utf-8");    //指定字符编码为“utf-8”
        hints.put(EncodeHintType.ERROR_CORRECTION,ErrorCorrectionLevel.M);  //指定二维码的纠错等级为中级
        hints.put(EncodeHintType.MARGIN, 2);    //设置图片的边距

        /**
         * 生成二维码
         */
        try {
            BitMatrix bitMatrix=new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height,hints);
            Path file=new File("D:/2barcode/code.png").toPath();
            MatrixToImageWriter.writeToPath(bitMatrix, format, file);
        } catch (Exception e) {
            e.printStackTrace();
        }


    }
}

生成的二维码如图:
这里写图片描述
手机扫描二维码结果:
这里写图片描述
2、解析二维码

package imis.black.zxing;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;

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){
        MultiFormatReader formatReader=new MultiFormatReader();
        File file=new File("D:/2barcode/code.png");
        BufferedImage image;
        try {
            image = ImageIO.read(file);
            BinaryBitmap binaryBitmap=new BinaryBitmap(new HybridBinarizer
                                    (new BufferedImageLuminanceSource(image)));

            HashMap hints=new HashMap();
            hints.put(EncodeHintType.CHARACTER_SET,"utf-8");    //指定字符编码为“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();
        }
    }
}

代码执行结果:

解析结果:有趣且认真
二维码格式:QR_CODE
二维码文本内容:有趣且认真
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值