二维码生成器简单使用

在这里插入图片描述

生成器工具类

以下是一个简单的 QRCodeUtil 示例,这个工具类使用了 zxing 库来生成二维码图片:

import com.google.zxing.BarcodeFormat;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

public class QRCodeUtil {
    
    
    private static final String DEFAULT_IMAGE_FORMAT = "PNG";
    private static final int DEFAULT_WIDTH = 300;
    private static final int DEFAULT_HEIGHT = 300;

    public static BufferedImage createQRCode(String content) throws Exception {
    
    
        return createQRCode(content, DEFAULT_WIDTH, DEFAULT_HEIGHT);
    }

    public static BufferedImage createQRCode(String content, int width, int height) throws Exception {
    
    
        BitMatrix matrix = new QRCodeWriter().encode(content, BarcodeFormat.QR_CODE, width, height);
        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, matrix.get(x, y) ? Color.BLACK.getRGB() : Color.WHITE.getRGB());
            }
        }
        return image;
    }

    public static byte[] toByteArray(BufferedImage image, String format) throws IOException {
    
    
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        ImageIO.write(image, format, os);
        return os.toByteArray();
    }

    public static String toBase64String(BufferedImage image, String format) throws IOException {
    
    
        byte[] bytes = toByteArray(image, format);
        return java.util.Base64.getEncoder().encodeToString(bytes);
    }
}

这个 QRCodeUtil 工具类包含了以下方法:

  • createQRCode(String content):生成默认宽度和高度的二维码图片,并返回 BufferedImage 对象。
  • createQRCode(String content, int width, int height):根据指定的宽度和高度生成二维码图片,并返回 BufferedImage 对象。
  • toByteArray(BufferedImage image, String format):将 BufferedImage 对象转换为字节数组,并指定图像格式。
  • toBase64String(BufferedImage image, String format):将 BufferedImage 对象转换为 Base64 编码的字符串,并指定图像格式。

您可以根据需要使用这些方法来生成二维码图片,并将其转换为字节数组或 Base64 字符串。请确保在使用完 BufferedImage 对象后关闭相关资源,避免资源泄漏。

测试

下面是一个使用 QRCodeUtil 的案例,展示了如何生成二维码并将其保存为图片文件以及转换为 Base64 字符串:

public class QRCodeExample {
    
    
    public static void main(String[] args) {
    
    
        String content = "https://example.com"; // 要生成二维码的内容

        try {
    
    
            // 生成二维码图片
            BufferedImage qrCodeImage = QRCodeUtil.createQRCode(content);
            
            // 将二维码保存为图片文件
            String imagePath = "path/to/save/image.png";  // 设置保存路径和文件名
            File outputFile = new File(imagePath);
            ImageIO.write(qrCodeImage, "PNG", outputFile);
            System.out.println("二维码已保存为图片:" + imagePath);
            
            // 将二维码转换为 Base64 字符串
            String base64Image = QRCodeUtil.toBase64String(qrCodeImage, "PNG");
            System.out.println("Base64 图片数据:" + base64Image);
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
    }
}

这个案例中,我们首先指定要生成二维码的内容为 https://example.com。然后,我们调用 createQRCode(content) 方法生成二维码图片,并保存到指定的路径。

接着,我们调用 toBase64String(qrCodeImage, "PNG") 方法将二维码图片转换为 Base64 字符串,其中第二个参数表示图像格式(这里使用 PNG 格式)。

最后,我们通过打印输出来展示保存为图片文件的路径和转换后的 Base64 图片数据。

请确保在运行示例代码之前,根据实际情况修改保存路径和文件名。另外,需要添加相关的依赖包(如 zxing 库)以使代码能够顺利编译和运行。

猜你喜欢

转载自blog.csdn.net/weixin_53742691/article/details/131717459