diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/DeviceQRCodeService.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/DeviceQRCodeService.java index ee8f8ee3..390da978 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/DeviceQRCodeService.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/service/DeviceQRCodeService.java @@ -18,6 +18,6 @@ public class DeviceQRCodeService { public byte[] generate(String deviceNo, String modelNo) throws Exception { ParamConfig config = paramConfigService.lambdaQuery().eq(ParamConfig::getCode, "DeviceQRCodeHost").one(); - return QRCodeUtil.generateDeviceQRCode(deviceNo ,StrUtil.format(config.getValue(), deviceNo,modelNo),200, 200); + return QRCodeUtil.generateDeviceQRCode(deviceNo, StrUtil.format(config.getValue(), deviceNo, modelNo), 550, 550); } } diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/QRCodeUtil.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/QRCodeUtil.java index 96e6d7c5..7d6904a2 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/QRCodeUtil.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/QRCodeUtil.java @@ -11,6 +11,7 @@ import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; +import java.io.InputStream; import java.util.Hashtable; public class QRCodeUtil { @@ -48,16 +49,16 @@ public class QRCodeUtil { /** * 为图片添加边框和文字 - * * @param qrImage 原始二维码图片 * @param text 要添加的文字 * @return 带边框和文字的新图片 */ - private static BufferedImage addBorderAndText(BufferedImage qrImage, String text) { + private static BufferedImage addBorderAndText(BufferedImage qrImage, String text) throws Exception { int borderSize = 1; - int extend=10; - int newWidth = qrImage.getWidth() + extend; - int newHeight = qrImage.getHeight() + extend; + int extend1 = 10; + int extend2 = 50; + int newWidth = qrImage.getWidth() + extend1; + int newHeight = qrImage.getHeight() + extend2; // 创建新画布(扩大尺寸以容纳边框) BufferedImage newImage = new BufferedImage( newWidth, @@ -65,11 +66,12 @@ public class QRCodeUtil { BufferedImage.TYPE_INT_RGB ); Graphics2D g = newImage.createGraphics(); + g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); // 填充边框颜色 g.setColor(Color.WHITE); g.fillRect(0, 0, newWidth, newHeight); // 绘制原始二维码(居中) - g.drawImage(qrImage, borderSize + extend / 2, borderSize, null); + g.drawImage(qrImage, borderSize + extend1 / 2, borderSize, null); // 绘制边框 g.setColor(Color.BLACK); g.setStroke(new BasicStroke(borderSize)); @@ -79,13 +81,14 @@ public class QRCodeUtil { g.drawLine(0, newHeight - borderSize, newWidth, newHeight - borderSize); // 添加文字(居中显示) g.setColor(Color.BLACK); - g.setFont(new Font("Arial", Font.PLAIN, 14)); - g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); + InputStream is = QRCodeUtil.class.getResourceAsStream("/fonts/simsun.ttc"); + Font baseFont = Font.createFont(Font.TRUETYPE_FONT, is).deriveFont(Font.BOLD, 45.0f); + g.setFont(baseFont); FontMetrics fm = g.getFontMetrics(); int textWidth = fm.stringWidth(text); int x = (newImage.getWidth() - textWidth) / 2; - int y = newImage.getHeight() - 15; - g.drawString(text, x, y); + g.drawString(text, x, qrImage.getHeight() + (extend2 - fm.getAscent()) / 2); + is.close(); g.dispose(); return newImage; }