From 17d65c77c6fedf1b51afec166c5a9735c6e4d38e Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期一, 26 一月 2026 16:48:45 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/jtwy' into jtwy
---
src/main/java/com/ruoyi/common/utils/MatrixToImageWriter.java | 67 +++++++++++++++++++++++++++++++++
1 files changed, 67 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/ruoyi/common/utils/MatrixToImageWriter.java b/src/main/java/com/ruoyi/common/utils/MatrixToImageWriter.java
new file mode 100644
index 0000000..ad9f2aa
--- /dev/null
+++ b/src/main/java/com/ruoyi/common/utils/MatrixToImageWriter.java
@@ -0,0 +1,67 @@
+package com.ruoyi.common.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 javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 閰嶇疆鍥惧儚鍐欏叆鍣�
+ *
+ * @author z1292
+ *
+ */
+public class MatrixToImageWriter {
+ private final int BLACK = 0xFF000000;
+ private final int WHITE = 0xFFFFFFFF;
+
+ private 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 void writeToFile(BitMatrix matrix, String format, File file) throws IOException {
+ BufferedImage image = toBufferedImage(matrix);
+ if (!ImageIO.write(image, format, file)) {
+ throw new RuntimeException("Could not write an image of format " + format + " to " + file);
+ }
+ }
+
+ public String code(String content, String path) {
+ try {
+ String codeName = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yy_MM_dd&HH_mm_ss"));// 浜岀淮鐮佺殑鍥剧墖鍚�
+ String imageType = "jpg";// 鍥剧墖绫诲瀷
+ MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
+ Map<EncodeHintType, Object> hints = new HashMap<>();
+ hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
+ hints.put(EncodeHintType.MARGIN, 0);
+ BitMatrix bitMatrix = multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, 400, 400, hints);
+ File file1 = new File(path, codeName + "." + imageType);
+ writeToFile(bitMatrix, imageType, file1);
+ return file1.getPath();
+ } catch (WriterException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ throw new RuntimeException("浜岀淮鐮佺敓鎴愬け璐�");
+ }
+
+}
--
Gitblit v1.9.3