• java生成二维码/java解析二维码


    二维码的优缺点

        优点:1. 高密度编码,信息容量大;2.编码范围广;3.容错能力强;4.译码可靠性高;5.可引入加密措施;6.成本低,易制作,持久耐用。

        缺点:1.二维码技术成为手机病毒、钓鱼网站传播的新渠道;2.信息容易泄露。

    三大国际标准

        1.PDF417:不支持中文;

        2.DM:专利未公开,需要支付专利费用;

        3.QR Code:专利公开,支持中文。

        其中,QR Code具有识读速度快、数据密度大、占用空间小的优势。

    纠错能力

        L级:约可纠错7%的数据码字

        M级:约可纠错15%的数据码字

        Q级:约可纠错25%的数据码字

        H级:约可纠错30%的数据码字

    ZXing生成/读取二维码

    复制代码
    package com.demo.test;
    
    
    import com.google.zxing.*;
    import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
    import com.google.zxing.client.j2se.MatrixToImageWriter;
    import com.google.zxing.common.BitMatrix;
    import com.google.zxing.common.HybridBinarizer;
    import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
    
    import javax.imageio.ImageIO;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.nio.file.Path;
    import java.util.HashMap;
    
    /**
     * Created by zhangxiao on 2018/11/23
     * Descr: 生成二维码
     *
     */
    public class CreateQRCode {
    
    
    
        public static void main(String[] args) throws Exception {
            final int width = 300;
            final int height = 300;
            final String format = "png";
            final String content = "https://www.baidu.com";
    
            //定义二维码的参数
            HashMap hints = new HashMap();
            hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
            //L级:约可纠错7%的数据码字,M级:约可纠错15%的数据码字,Q级:约可纠错25%的数据码字,H级:约可纠错30%的数据码字
            hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.Q);
            hints.put(EncodeHintType.MARGIN, 2);
    
           //生成二维码
            BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints);
            Path file = new File("D:/img.png").toPath();
            MatrixToImageWriter.writeToPath(bitMatrix, format, file);
            System.out.println("生成成功,路径:" + file.toString());
            System.out.println("------------------------------");
            //解析二维码
            MultiFormatReader formatReader = new MultiFormatReader();
            BufferedImage image = ImageIO.read(file.toFile());
            BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image)));
            Result result = formatReader.decode(binaryBitmap, hints);
            System.out.println("二维码解析结果:" + result.toString());
            System.out.println("二维码的格式:" + result.getBarcodeFormat());
            System.out.println("二维码的文本内容:" + result.getText());
        }
    
    }
    复制代码
  • 相关阅读:
    Queue
    Singly-Linked List
    Array
    HTTP请求详解
    封装element的API
    uniapp登录逻辑
    Selector学习笔记 (未完待续)
    <Scalable IO in Java>学习
    Spring PropertyMapper源码阅读笔记
    leetcode 字节跳动探索系列
  • 原文地址:https://www.cnblogs.com/zjw2004112/p/11584422.html
Copyright © 2020-2023  润新知