From c8a3df8ef73d08de60ca49e09a343e87bcc66a91 Mon Sep 17 00:00:00 2001 From: wlzboy <66905212@qq.com> Date: 星期六, 27 九月 2025 22:01:56 +0800 Subject: [PATCH] fix:修改配置 --- ruoyi-common/src/main/java/com/ruoyi/common/utils/QRCodeUtils.java | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 52 insertions(+), 0 deletions(-) diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/QRCodeUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/QRCodeUtils.java index 5a28d53..cb983db 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/QRCodeUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/QRCodeUtils.java @@ -9,6 +9,7 @@ import org.slf4j.LoggerFactory; import javax.imageio.ImageIO; +import java.awt.*; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; @@ -95,4 +96,55 @@ } return null; } + + /** + * 鐢熸垚甯﹁溅鐗屽彿鐨凚ase64缂栫爜浜岀淮鐮� + * + * @param content 浜岀淮鐮佸唴瀹� + * @param vehicleNo 杞︾墝鍙� + * @return Base64缂栫爜鐨勪簩缁寸爜 + */ + public static String generateQRCodeWithVehicleNoToBase64(String content, String vehicleNo) { + try { + Map<EncodeHintType, Object> hints = new HashMap<>(); + hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); + hints.put(EncodeHintType.MARGIN, 1); + + BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, WIDTH, HEIGHT, hints); + BufferedImage qrImage = MatrixToImageWriter.toBufferedImage(bitMatrix); + + // 鍒涘缓甯︽枃瀛楃殑鍥剧墖 + int textHeight = 40; // 鏂囧瓧鍖哄煙楂樺害 + int totalHeight = HEIGHT + textHeight; + BufferedImage finalImage = new BufferedImage(WIDTH, totalHeight, BufferedImage.TYPE_INT_RGB); + Graphics2D g2d = finalImage.createGraphics(); + + // 璁剧疆鑳屾櫙涓虹櫧鑹� + g2d.setColor(Color.WHITE); + g2d.fillRect(0, 0, WIDTH, totalHeight); + + // 缁樺埗浜岀淮鐮� + g2d.drawImage(qrImage, 0, 0, null); + + // 缁樺埗杞︾墝鍙锋枃瀛� + g2d.setColor(Color.BLACK); + g2d.setFont(new Font("寰蒋闆呴粦", Font.BOLD, 16)); + FontMetrics fm = g2d.getFontMetrics(); + int textWidth = fm.stringWidth(vehicleNo); + int x = (WIDTH - textWidth) / 2; + int y = HEIGHT + (textHeight + fm.getAscent()) / 2; + g2d.drawString(vehicleNo, x, y); + + g2d.dispose(); + + // 杞崲涓築ase64 + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ImageIO.write(finalImage, FORMAT, baos); + return "data:image/png;base64," + java.util.Base64.getEncoder().encodeToString(baos.toByteArray()); + + } catch (Exception e) { + log.error("鐢熸垚甯﹁溅鐗屽彿鐨勪簩缁寸爜澶辫触: {}", e.getMessage()); + return null; + } + } } -- Gitblit v1.9.1