From 581cb15476e1057633f0fbd08b8c4cfd7b838e77 Mon Sep 17 00:00:00 2001
From: zhaoxiaohao <913652501@qq.com>
Date: Sat, 04 Jul 2020 16:16:56 +0800
Subject: [PATCH] Merge branch 'dev' of http://192.168.2.240:7070/r/kidgrow-microservices-platform into dev
---
kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/utils/QRCodeUtil.java | 49 +++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 45 insertions(+), 4 deletions(-)
diff --git a/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/utils/QRCodeUtil.java b/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/utils/QRCodeUtil.java
index ee58759..29762ba 100644
--- a/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/utils/QRCodeUtil.java
+++ b/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/utils/QRCodeUtil.java
@@ -14,6 +14,9 @@
import java.io.IOException;
import java.util.Hashtable;
+import static com.google.zxing.client.j2se.MatrixToImageConfig.BLACK;
+import static com.google.zxing.client.j2se.MatrixToImageConfig.WHITE;
+
/**
* @Author: dougang
* @Description:
@@ -23,17 +26,18 @@
/**
* 生成二维码
+ *
* @param contents
* @param width
* @param height
- * @param level 0:M,1:L,2:H,3:Q
+ * @param level 0:M,1:L,2:H,3:Q
* @return
*/
- public static String creatRrCode(String contents, int width, int height,int level) {
+ public static String creatRrCode(String contents, int width, int height, int level) {
String binary = null;
Hashtable hints = new Hashtable();
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
- switch (level){
+ switch (level) {
case 0:
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
break;
@@ -55,7 +59,11 @@
contents, BarcodeFormat.QR_CODE, width, height, hints);
// 读取文件转换为字节数组
ByteArrayOutputStream out = new ByteArrayOutputStream();
+
BufferedImage image = toBufferedImage(bitMatrix);
+ //切白边
+ image = deleteWhite(bitMatrix);
+
//转换成png格式的IO流
ImageIO.write(image, "png", out);
byte[] bytes = out.toByteArray();
@@ -87,11 +95,44 @@
image.setRGB(x, y, matrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF);
}
}
+
+ return image;
+ }
+
+ /**
+ * 切白边
+ *
+ * @param matrix
+ * @return
+ */
+ private static BufferedImage deleteWhite(BitMatrix matrix) {
+ int[] rec = matrix.getEnclosingRectangle();
+ int resWidth = rec[2] + 1;
+ int resHeight = rec[3] + 1;
+
+ BitMatrix resMatrix = new BitMatrix(resWidth, resHeight);
+ resMatrix.clear();
+ for (int i = 0; i < resWidth; i++) {
+ for (int j = 0; j < resHeight; j++) {
+ if (matrix.get(i + rec[0], j + rec[1]))
+ resMatrix.set(i, j);
+ }
+ }
+
+ int width = resMatrix.getWidth();
+ int height = resMatrix.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, resMatrix.get(x, y) ? BLACK : WHITE);
+ }
+ }
return image;
}
public static void main(String[] args) {
- String binary = QRCodeUtil.creatRrCode("https://baidu.com", 200,200,12);
+ String binary = QRCodeUtil.creatRrCode("http://192.168.2.146:8089/upload/saasmobile.html?hospitolId=1&departmentId=1&doctorId=1278159153159888898&childid=3001&diagnosticId=300101&puuid=dbd8b1c0-bdc5-11ea-b37d-1b33e9f3fd18", 200, 200, 2);
System.out.println(binary);
}
}
--
Gitblit v1.8.0