用QRcode生成二维码

引包

		<dependency>
			<groupId>QRCodegroupId>
			<artifactId>QRCodeartifactId>
			<version>3.0version>
		dependency>

实现

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import com.swetake.util.Qrcode;

public class QRCodeUtil {
    // 设置编码格式
    private static final String CHARSET = "utf-8";
    // 设置二维码的大小
    private static final int QRCODE_SIZE = 150;

    public static BufferedImage createImage(String content) throws Exception {
        // 创建一个图像缓冲区
        BufferedImage bi = new BufferedImage(QRCODE_SIZE, QRCODE_SIZE, BufferedImage.TYPE_INT_RGB);
        // 获取图像缓冲区的图形对象
        Graphics2D g = bi.createGraphics();
        try{
            // 创建一个 Qrcode 对象
            Qrcode qrcode = new Qrcode();
            // 设置二维码的纠错级别 QR码的纠错级别有四种:L、M、Q、H,分别对应7%、15%、25%、30%的纠错能力。
            // 要输入的内容越长,他的纠错级别就要越低,否则存不下那么多东西
            qrcode.setQrcodeErrorCorrect('M');
            // 设置二维码的编码模式
            // 有三种选择,分别为N数字,A字符a-Z,B代表普通字符
            qrcode.setQrcodeEncodeMode('B');
            // 设置二维码的版本号
            // 用于设置QR码的版本。版本参数是一个整数,范围在1到40之间,它控制了QR码的大小(最小的版本1是一个21x21的矩阵)
            // 数字越大,二维码长得越复杂
            qrcode.setQrcodeVersion(7);
            // 将内容转换为字节数组
            byte[] d = content.getBytes(CHARSET);
            // 设置背景颜色为白色
            g.setBackground(Color.WHITE);
            // 清除图像缓冲区
            g.clearRect(0, 0, QRCODE_SIZE, QRCODE_SIZE);
            // 设置前景颜色为黑色
            g.setColor(Color.BLACK);
            // 判断内容的长度是否合法
            if (d.length > 0 && d.length < 120) {
                // 计算二维码的布尔矩阵
                boolean[][] s = qrcode.calQrcode(d);
                // 遍历矩阵的行
                for (int i = 0; i < s.length; i++) {
                    // 遍历矩阵的列
                    for (int j = 0; j < s.length; j++) {
                        // 如果矩阵元素为真,表示该位置为黑色
                        if (s[j][i]) {
                            // 绘制一个小方块
                            g.fillRect(j * 3 + 2, i * 3 + 2, 3, 3);
                        }
                    }
                }
            }
        }catch (Exception ex){
            throw new Exception(ex);
        }finally {
            // 释放图形对象资源
            g.dispose();
            // 刷新图像缓冲区
            bi.flush();
        }
        // 返回图像缓冲区对象
        System.out.println("111");
        return bi;
    }

    public static void main(String[] args) throws Exception {
        // 定义要生成二维码的内容
        String content = "https://blog.csdn.net/qq_43813182";
        // 调用 createImage 方法生成二维码图像
        BufferedImage image = createImage(content);
        // 将图像写入文件,格式为 png,文件名为 qrcode.png
        ImageIO.write(image, "png", new File("qrcode4.png"));
    }
}

运行

用QRcode生成二维码_第1张图片
用微信扫描成功跳转

你可能感兴趣的:(Java,java)