QRコードツールを生成する

package com.sjjtcloud;

import com.github.binarywang.utils.qrcode.MatrixToImageWriter;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

import java.io.*;
import java.util.HashMap;
import java.util.Map;

/**
 * 生成二维码:导入以下依赖
 *          <dependency>
 *             <groupId>com.google.zxing</groupId>
 *             <artifactId>core</artifactId>
 *             <version>3.3.2</version>
 *          </dependency>
 */
public class Demo {
    // 默认二维码宽度
    public static final int WIDTH = 300;
    // 默认二维码高度
    public static final int HEIGHT = 300;
    // 默认二维码文件格式
    public static final String FORMAT = "png";
    // 二维码参数
    public static final Map<EncodeHintType, Object> HINTS = new HashMap<EncodeHintType, Object>();

    //初始化编码格式等参数
    static {
        // 字符编码
        HINTS.put(EncodeHintType.CHARACTER_SET, "utf-8");
        HINTS.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
        // 二维码与图片边距
        HINTS.put(EncodeHintType.MARGIN, 2);
    }

    /**
     * @param content 二维码内容即要存储在二维码中的内容(扫描二维码之后获取的内容)
     * @param stream  输出流
     * @param width   二维码宽
     * @param height  二维码高
     * @throws WriterException
     * @throws IOException
     * @description:功能描述 将二维码写出到输出流中
     * @see: 需要参见的其它内容
     */
    public static void writeToStream(String content, OutputStream stream, Integer width, Integer height) throws Exception {
        if (width == null) {
            width = WIDTH;
        }
        if (height == null) {
            height = HEIGHT;
        }
        BitMatrix bitMatrix = new MultiFormatWriter().encode(content,
                BarcodeFormat.QR_CODE, width, height, HINTS);
        MatrixToImageWriter.writeToStream(bitMatrix, FORMAT, stream);
    }

    public static  void main(String[] arg) throws Exception {

        ByteArrayOutputStream out = new ByteArrayOutputStream();
        // 生成二维码图片
        Demo.writeToStream("二维码信息", out, 300, 300);
        InputStream in = new ByteArrayInputStream(out.toByteArray());
        //将生成的二维码写入图片,也可直接使用流
        String filePath = "C:\\Users\\A\\Desktop\\aaa.jpg";
        FileOutputStream fos = new FileOutputStream(filePath);
        int length;
        byte[] b = new byte[1024];
        while ((length = in.read(b)) > 0) {
            fos.write(b, 0, length);
        }
        fos.flush();
        in.close();
        fos.close();
    }
}

 

おすすめ

転載: blog.csdn.net/Tom_sensen/article/details/111595280