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