生成器工具类
以下是一个简单的 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 库)以使代码能够顺利编译和运行。