基于Zxing的二维码生成和识别

一、添加依赖

<!--导入zxing依赖-->
<dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>core</artifactId>
    <version>3.2.1</version>
</dependency>
<dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>javase</artifactId>
    <version>3.2.1</version>
</dependency>

二、书写工具类

  public class QRCodeUtil {
        // 指定图片生成文件格式
        private final static String format="png";
    
        //生成二维码
        public static void createQRCode(int width,int height,String content,String path){
            //定义二维码参数
            HashMap<EncodeHintType,Object> hints=new HashMap<>();
            hints.put(EncodeHintType.CHARACTER_SET,"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);
                MatrixToImageWriter.writeToStream(bitMatrix, format,
                                                  new FileOutputStream(new File(path)));
                System.out.println("二维码生成成功。。。。");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        //二维码解析
        public static void decodeQRCode(String path){
            try {
                //读取二维码
                MultiFormatReader formatReader=new MultiFormatReader();
                File file=new File(path);
                BufferedImage image= ImageIO.read(file);
                //解析
                BinaryBitmap binaryBitmap=new BinaryBitmap(new HybridBinarizer(new                                                     BufferedImageLuminanceSource(image)));
                HashMap<DecodeHintType,Object> hints=new HashMap<>();
                hints.put(DecodeHintType.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();
            }
        }
    }

三、测试使用

public class Client {
    public static void main(String[] args) {
        String path="D:\\bd.png";
        QRCodeUtil.createQRCode(400,400,"http://www.baidu.com",path);
        QRCodeUtil.decodeQRCode(path);
    }
}

源码链接

  • https://github.com/ThailandKing/imooc_demo.git
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值