ZXing二维码介绍

Posted 晨港飞燕

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ZXing二维码介绍相关的知识,希望对你有一定的参考价值。

ZXing(Zebra Crossing)是Google开发的一个二维码解析和生成的开源库。
ZXing GitHub地址
引入

        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>core</artifactId>
            <version>3.3.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>javase</artifactId>
            <version>3.3.0</version>
        </dependency>

public class QRCodeUtil 
    /**
     * 生成二维码
     * @param content   源内容
     * @param outputStream 输出流
     * @throws Exception
     */
    public static void createQRImage(String content, OutputStream outputStream) throws Exception 
        Hashtable hints = new Hashtable();
        // 指定纠错等级
        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
        hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
        hints.put(EncodeHintType.MARGIN, 1);
        BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, 300, 300,
                hints);
        int width = bitMatrix.getWidth();
        int height = bitMatrix.getHeight();

        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        for (int x = 0; x < width; x++) 
            for (int y = 0; y < height; y++) 
                image.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF);
            
        
        // 存到磁盘
        ImageIO.write(image, "jpg", outputStream);
        outputStream.flush();
        outputStream.close();
    

    public static void createQRImage2(String content,OutputStream outputStream) throws Exception 
        Hashtable hints = new Hashtable();
        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
        hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
        hints.put(EncodeHintType.MARGIN, 1);
        BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, 300, 300,
                hints);
        //生成png格式的图片保存到imgPath路径位置
        MatrixToImageWriter.writeToStream(bitMatrix, "jpg",outputStream);
        outputStream.flush();
        outputStream.close()
    
    public static void createQRImage2(String content,File file) throws Exception 
        Hashtable hints = new Hashtable();
        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
        hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
        hints.put(EncodeHintType.MARGIN, 1);
        BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, 300, 300,
                hints);
        //生成png格式的图片保存到imgPath路径位置
        MatrixToImageWriter.writeToFile(bitMatrix, "jpg",file);
    
    public static void main(String[] args) throws Exception 
        String codeUrl = "http://www.baidu.com";
        //使用订单号来作为二维码的图片名称
        File file = new File("E:\\\\","测试3" + ".jpg");
        FileOutputStream out=new FileOutputStream(file);
        createQRImage(codeUrl, out);
        System.out.println(file.delete());
    



条形码有很多种类,二维(条形)码就是其中一种。表示内容也有不同,有的只能表示纯数字,不能表示字母。


BarcodeFormat.CODE_128; // 表示高密度数据, 字符串可变长,符号内含校验码
BarcodeFormat.CODE_39;
BarcodeFormat.CODE_93;
BarcodeFormat.CODABAR; // 可表示数字0 - 9,字符$、+、 -、还有只能用作起始/终止符的a,b,c d四个字符,可变长度,没有校验位
BarcodeFormat.DATA_MATRIX;
BarcodeFormat.EAN_8;
BarcodeFormat.EAN_13;
BarcodeFormat.ITF;
BarcodeFormat.PDF417; // 二维码
BarcodeFormat.QR_CODE; // 二维码
BarcodeFormat.RSS_EXPANDED;
BarcodeFormat.RSS14;
BarcodeFormat.UPC_E; // 统一产品代码E:7位数字,最后一位为校验位
BarcodeFormat.UPC_A; // 统一产品代码A:12位数字,最后一位为校验位
BarcodeFormat.UPC_EAN_EXTENSION;

参考:https://blog.csdn.net/liudongdong19/article/details/80147404
https://blog.csdn.net/zhoumushui/article/details/51008264

以上是关于ZXing二维码介绍的主要内容,如果未能解决你的问题,请参考以下文章

ZXing二维码介绍

Android:使用ZXing生成二维码(支持加入Logo图案)

用Spring Boot+ZXing生成二维码

用Spring Boot+ZXing生成二维码

用Spring Boot+ZXing生成二维码

用Spring Boot+ZXing生成二维码