From 59e91a4e9ddaf23cebb12993c774aa899ab22d16 Mon Sep 17 00:00:00 2001 From: 郑永安 <zyazyz250@sina.com> Date: 星期一, 19 六月 2023 14:22:45 +0800 Subject: [PATCH] 描述 --- src/main/java/com/gk/firework/Domain/Utils/MatrixToImageWriter.java | 82 +++++++++++++++++++++++++++++++++++++++++ 1 files changed, 82 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/gk/firework/Domain/Utils/MatrixToImageWriter.java b/src/main/java/com/gk/firework/Domain/Utils/MatrixToImageWriter.java new file mode 100644 index 0000000..a527583 --- /dev/null +++ b/src/main/java/com/gk/firework/Domain/Utils/MatrixToImageWriter.java @@ -0,0 +1,82 @@ +package com.gk.firework.Domain.Utils; + +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 sun.misc.BASE64Encoder; + +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.OutputStream; +import java.util.Hashtable; + +public class MatrixToImageWriter { + private static final int BLACK = 0xFF000000; + private static final int WHITE = 0xFFFFFFFF; + + private MatrixToImageWriter() { + } + + private static BufferedImage toBufferedImage(BitMatrix matrix) { + int width = matrix.getWidth(); + int height = matrix.getHeight(); + 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) ? BLACK : WHITE); + } + } + return image; + } + private static void writeToFile(BitMatrix matrix, String format, File file) + throws IOException { + BufferedImage image = toBufferedImage(matrix); + if (!ImageIO.write(image, format, file)) { + throw new IOException("Could not write an image of format " + + format + " to " + file); + } + } + private static void writeToStream(BitMatrix matrix, String format, + OutputStream stream) throws IOException { + BufferedImage image = toBufferedImage(matrix); + if (!ImageIO.write(image, format, stream)) { + throw new IOException("Could not write an image of format " + format); + } + } + + public static String getBase64Img(String text) throws IOException, WriterException { + // 二维码图片宽度 + int width = 40; + // 二维码图片高度 + int height = 40; + // 二维码的图片格式 + String format = "jpg"; + Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>(); + // 内容所使用字符集编码 + hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); + + BitMatrix bitMatrix = new MultiFormatWriter().encode(text, + BarcodeFormat.CODE_128, width, height, hints); + /*BitMatrix bitMatrix = new MultiFormatWriter().encode(text, + BarcodeFormat.QR_CODE, width, height, hints);*/ + // 生成二维码 + File outputFile = new File("d:" + File.separator + "new.jpg"); + MatrixToImageWriter.writeToFile(bitMatrix, format, outputFile); + + ByteArrayOutputStream pngOutputStream = new ByteArrayOutputStream(); + MatrixToImageWriter.writeToStream(bitMatrix, "PNG", pngOutputStream); + byte[] pngData = pngOutputStream.toByteArray(); + BASE64Encoder encoder = new BASE64Encoder(); + String png_base64 = encoder.encodeBuffer(pngData).trim(); + png_base64 = png_base64.replaceAll("\n", "").replaceAll("\r", ""); + return png_base64; + } +} + + -- Gitblit v1.9.2