• 谷歌zxing 二维码生成工具


    一、加入maven依赖

    <!-- 谷歌zxing 二维码 -->
    <dependency>
        <groupId>com.google.zxing</groupId>
        <artifactId>core</artifactId>
        <version>3.3.3</version>
    </dependency>
    <dependency>
        <groupId>com.google.zxing</groupId>
        <artifactId>javase</artifactId>
        <version>3.3.3</version>
    </dependency>

    二、工具类代码

     1 package com.example.demo.utils;
     2 
     3 import com.google.zxing.*;
     4 import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
     5 import com.google.zxing.common.BitMatrix;
     6 import com.google.zxing.common.HybridBinarizer;
     7 import com.google.zxing.qrcode.QRCodeReader;
     8 import com.google.zxing.qrcode.QRCodeWriter;
     9 import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
    10 
    11 import javax.imageio.ImageIO;
    12 import java.awt.*;
    13 import java.awt.image.BufferedImage;
    14 import java.io.*;
    15 import java.util.Hashtable;
    16 
    17 /**
    18  * @author zsh
    19  * @company wlgzs
    20  * @create 2019-03-10 15:17
    21  * @Describe 二维码生成和读的工具类
    22  */
    23 public class QrCodeCreateUtil {
    24     /**
    25      * 生成包含字符串信息的二维码图片
    26      * @param outputStream 文件输出流路径
    27      * @param content 二维码携带信息
    28      * @param qrCodeSize 二维码图片大小
    29      * @param imageFormat 二维码的格式
    30      * @throws WriterException
    31      * @throws IOException
    32      */
    33     public static boolean createQrCode(OutputStream outputStream, String content, int qrCodeSize, String imageFormat) throws WriterException, IOException{
    34         //设置二维码纠错级别MAP
    35         Hashtable<EncodeHintType, ErrorCorrectionLevel> hintMap = new Hashtable<EncodeHintType, ErrorCorrectionLevel>();
    36         hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);  // 矫错级别
    37         QRCodeWriter qrCodeWriter = new QRCodeWriter();
    38         //创建比特矩阵(位矩阵)的QR码编码的字符串
    39         BitMatrix byteMatrix = qrCodeWriter.encode(content, BarcodeFormat.QR_CODE, qrCodeSize, qrCodeSize, hintMap);
    40         // 使BufferedImage勾画QRCode  (matrixWidth 是行二维码像素点)
    41         int matrixWidth = byteMatrix.getWidth();
    42         BufferedImage image = new BufferedImage(matrixWidth-200, matrixWidth-200, BufferedImage.TYPE_INT_RGB);
    43         image.createGraphics();
    44         Graphics2D graphics = (Graphics2D) image.getGraphics();
    45         graphics.setColor(Color.WHITE);
    46         graphics.fillRect(0, 0, matrixWidth, matrixWidth);
    47         // 使用比特矩阵画并保存图像
    48         graphics.setColor(Color.BLACK);
    49         for (int i = 0; i < matrixWidth; i++){
    50             for (int j = 0; j < matrixWidth; j++){
    51                 if (byteMatrix.get(i, j)){
    52                     graphics.fillRect(i-100, j-100, 1, 1);
    53                 }
    54             }
    55         }
    56         return ImageIO.write(image, imageFormat, outputStream);
    57     }
    58 
    59     /**
    60      * 读二维码并输出携带的信息
    61      */
    62     public static void readQrCode(InputStream inputStream) throws IOException{
    63         //从输入流中获取字符串信息
    64         BufferedImage image = ImageIO.read(inputStream);
    65         //将图像转换为二进制位图源
    66         LuminanceSource source = new BufferedImageLuminanceSource(image);
    67         BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
    68         QRCodeReader reader = new QRCodeReader();
    69         Result result = null ;
    70         try {
    71             result = reader.decode(bitmap);
    72         } catch (ReaderException e) {
    73             e.printStackTrace();
    74         }
    75         System.out.println(result.getText());
    76     }
    77     /**
    78      * 测试代码
    79      * @throws WriterException
    80      */
    81     public static void main(String[] args) throws IOException, WriterException {
    82 
    83         createQrCode(new FileOutputStream(new File("d:\qrcode.jpg")),"WE1231238239128sASDASDSADSDWEWWREWRERWSDFDFSDSDF123123123123213123",900,"JPEG");
    84         readQrCode(new FileInputStream(new File("d:\qrcode.jpg")));
    85     }
    86 }

    效果图:

  • 相关阅读:
    some tips
    ORA00847: MEMORY_TARGET/MEMORY_MAX_TARGET and LOCK_SGA cannot be set together
    Chapter 01Overview of Oracle 9i Database Perfomrmance Tuning
    Chapter 02Diagnostic and Tuning Tools
    变量与常用符号
    Chapter 18Tuning the Operating System
    标准输入输出
    Trace files
    DBADeveloped Tools
    Chapter 03Database Configuration and IO Issues
  • 原文地址:https://www.cnblogs.com/zsh-blogs/p/10505430.html
Copyright © 2020-2023  润新知