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








![[Docker] Docker镜像管理和操作实践(二) 文末送书](https://img-blog.csdnimg.cn/2722c5f1d1514a018495fb18d74bb4e2.jpeg#pic_center)










