From 4435d86f1ac88e56f76a5eec3b1158e2340de0ca Mon Sep 17 00:00:00 2001 From: erdanergou Date: Sat, 18 Feb 2023 11:03:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9D=A1=E5=BD=A2=E7=A0=81?= =?UTF-8?q?=E7=94=9F=E6=88=90=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DepositoryController.java | 2 +- .../depository_manage/pojo/RestResponse.java | 9 ++--- .../utils/CreateQrCodeUtil.java | 33 +++++++++++-------- .../depository_manage/TestOther.java | 7 ++-- 4 files changed, 30 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java index dd371467..cdaaf5f0 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java @@ -1595,7 +1595,7 @@ public class DepositoryController { } try { // 二维码保存信息 - return RestResponse.CreateBarCode(qrCode); + return RestResponse.CreateBarCode(qrCode,depository.getDname()); } catch (IOException e) { return new RestResponse("err: " + e.getMessage(), 678, new StatusInfo("失败", "请联系开发人员")); } diff --git a/src/main/java/com/dreamchaser/depository_manage/pojo/RestResponse.java b/src/main/java/com/dreamchaser/depository_manage/pojo/RestResponse.java index 9580d2c2..3e09e19d 100644 --- a/src/main/java/com/dreamchaser/depository_manage/pojo/RestResponse.java +++ b/src/main/java/com/dreamchaser/depository_manage/pojo/RestResponse.java @@ -85,16 +85,17 @@ public class RestResponse implements Serializable { /** * 生成条形码 - * @param context 随机数 + * @param code 要打印的编码 + * @param name 要打印的名称 * @return * @throws IOException */ - public static RestResponse CreateBarCode(String context) throws IOException { + public static RestResponse CreateBarCode(String code,String name) throws IOException { // 生成base64类型图片 - String qrCode = CreateQrCodeUtil.CreateBarCode128(context, 52, 200); + String qrCode = CreateQrCodeUtil.CreateBarCode128(code,name, 60, 200); Map result = new HashMap<>(); result.put("qrCode",qrCode); - result.put("codeValue",context); + result.put("codeValue",code); return new RestResponse(result,200,new StatusInfo("成功!","条形码生成成功")); } diff --git a/src/main/java/com/dreamchaser/depository_manage/utils/CreateQrCodeUtil.java b/src/main/java/com/dreamchaser/depository_manage/utils/CreateQrCodeUtil.java index 7717ded6..0aebb318 100644 --- a/src/main/java/com/dreamchaser/depository_manage/utils/CreateQrCodeUtil.java +++ b/src/main/java/com/dreamchaser/depository_manage/utils/CreateQrCodeUtil.java @@ -80,15 +80,16 @@ public class CreateQrCodeUtil { /** * 用于创建code_128类型的条形码 - * @param content 条形码存储的数据 + * @param code 条形码的数据 + * @param name 条形码上方的名称 * @param height 高度 * @param width 宽度 * @return base64格式的字符串 */ - public static String CreateBarCode128(String content, int height, int width){ + public static String CreateBarCode128(String code,String name, int height, int width){ String resultImage = ""; - if (!StringUtils.isEmpty(content)) { - BufferedImage image = insertWords(getBarCode(content,width,height), content,width,height,80); + if (!StringUtils.isEmpty(code)) { + BufferedImage image = insertWords(getBarCode(code,width,height), code,name,width,height,120); ByteArrayOutputStream os = new ByteArrayOutputStream(); try { ImageIO.write(image, "png", os); @@ -149,34 +150,40 @@ public class CreateQrCodeUtil { * 把带logo的二维码下面加上文字 * * @param image 条形码图片 - * @param words 文字 + * @param code 文字 * @return 返回BufferedImage * @author fxbin */ - public static BufferedImage insertWords(BufferedImage image, String words, int WIDTH, int HEIGHT, int WORD_HEIGHT) { + public static BufferedImage insertWords(BufferedImage image, String code,String name, int WIDTH, int HEIGHT, int WORD_HEIGHT) { // 新的图片,把带logo的二维码下面加上文字 - if (org.apache.commons.lang.StringUtils.isNotEmpty(words)) { + if (org.apache.commons.lang.StringUtils.isNotEmpty(code)) { BufferedImage outImage = new BufferedImage(WIDTH, WORD_HEIGHT, BufferedImage.TYPE_INT_RGB); Graphics2D g2d = outImage.createGraphics(); // 抗锯齿 setGraphics2D(g2d); // 设置白色 setColorWhite(g2d); - // 画条形码到新的面板 - g2d.drawImage(image, 0, 0, image.getWidth(), image.getHeight(), null); + // 画条形码到新的面板(并居中) + g2d.drawImage(image, 0, WORD_HEIGHT / 2 -image.getHeight() / 2, image.getWidth(), image.getHeight(), null); // 画文字到新的面板 Color color = new Color(0, 0, 0); g2d.setColor(color); // 字体、字型、字号 g2d.setFont(new Font("微软雅黑", Font.PLAIN, 16)); //文字长度 - int strWidth = g2d.getFontMetrics().stringWidth(words); + int strWidth = g2d.getFontMetrics().stringWidth(code); //总长度减去文字长度的一半 (居中显示) int wordStartX = (WIDTH - strWidth) / 2; //height + (outImage.getHeight() - height) / 2 + 12 - int wordStartY = HEIGHT + 20; + int wordStartY = WORD_HEIGHT / 2 + image.getHeight() /2 + 16; + // 画文字 + g2d.drawString(code, wordStartX, wordStartY); + + strWidth = g2d.getFontMetrics().stringWidth(name); + wordStartX = (WIDTH - strWidth) / 2; + wordStartY = g2d.getFont().getSize(); // 画文字 - g2d.drawString(words, wordStartX, wordStartY); + g2d.drawString(name, wordStartX, wordStartY); g2d.dispose(); outImage.flush(); return outImage; @@ -207,7 +214,7 @@ public class CreateQrCodeUtil { public static void setColorWhite(Graphics2D g2d) { g2d.setColor(Color.WHITE); //填充整个屏幕 - g2d.fillRect(0, 0, 302, 113); + g2d.fillRect(0, 0, 302, 120); //设置笔刷 g2d.setColor(Color.BLACK); } diff --git a/src/test/java/com/dreamchaser/depository_manage/TestOther.java b/src/test/java/com/dreamchaser/depository_manage/TestOther.java index 849b9b16..ebfc0f89 100644 --- a/src/test/java/com/dreamchaser/depository_manage/TestOther.java +++ b/src/test/java/com/dreamchaser/depository_manage/TestOther.java @@ -37,7 +37,7 @@ public class TestOther { /** * 加文字 条形码 */ - public static final int WORD_HEIGHT = 80; + public static final int WORD_HEIGHT = 120; /** * 设置 条形码参数 @@ -97,7 +97,7 @@ public class TestOther { // 设置白色 setColorWhite(g2d); // 画条形码到新的面板 - g2d.drawImage(image, 0, 0, image.getWidth(), image.getHeight(), null); + g2d.drawImage(image, 0, WORD_HEIGHT / 2 -image.getHeight() / 2, image.getWidth(), image.getHeight(), null); // 画文字到新的面板 Color color = new Color(0, 0, 0); g2d.setColor(color); @@ -108,9 +108,10 @@ public class TestOther { //总长度减去文字长度的一半 (居中显示) int wordStartX = (WIDTH - strWidth) / 2; //height + (outImage.getHeight() - height) / 2 + 12 - int wordStartY = HEIGHT + 20; + int wordStartY = WORD_HEIGHT / 2 + image.getHeight() /2 + 16; // 画文字 g2d.drawString(words, wordStartX, wordStartY); + g2d.drawString(words, wordStartX, 16); g2d.dispose(); outImage.flush(); return outImage;