Преглед на файлове

二维码生成工具类以及maven依赖包

dzx преди 1 година
родител
ревизия
2e18cc9b60
променени са 2 файла, в които са добавени 55 реда и са изтрити 0 реда
  1. 13 0
      pom.xml
  2. 42 0
      src/main/java/com/xjrsoft/common/utils/QrCodeUtil.java

+ 13 - 0
pom.xml

@@ -69,6 +69,8 @@
         <easy.captcha.version>1.6.2</easy.captcha.version>
         <paho.mqttv5.version>1.2.5</paho.mqttv5.version>
         <liteflow.version>2.11.2</liteflow.version>
+
+        <zxing.version>3.2.1</zxing.version>
     </properties>
 
     <dependencies>
@@ -501,6 +503,17 @@
             <scope>runtime</scope>
         </dependency>
 
+        <!-- 引入用于生成二维码的zxing-->
+        <dependency>
+            <groupId>com.google.zxing</groupId>
+            <artifactId>core</artifactId>
+            <version>${zxing.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.zxing</groupId>
+            <artifactId>javase</artifactId>
+            <version>${zxing.version}</version>
+        </dependency>
 
     </dependencies>
 

+ 42 - 0
src/main/java/com/xjrsoft/common/utils/QrCodeUtil.java

@@ -0,0 +1,42 @@
+package com.xjrsoft.common.utils;
+
+import com.google.zxing.BarcodeFormat;
+import com.google.zxing.EncodeHintType;
+import com.google.zxing.MultiFormatWriter;
+import com.google.zxing.client.j2se.MatrixToImageWriter;
+import com.google.zxing.common.BitMatrix;
+
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+
+public class QrCodeUtil {
+
+	/**
+	 *	返回png格式的BufferedImage
+	 * @param url 链接地址
+	 * @param width 二维码的宽度
+	 * @param height 二维码的高度
+	 * @param margin 边距,只能是整数
+	 * @return
+	 * @throws Exception
+	 */
+	public static BufferedImage create(String url, int width, int height, int margin) throws Exception{
+        HashMap<EncodeHintType, Object> hints = new HashMap<>();
+        hints.put(EncodeHintType.CHARACTER_SET, StandardCharsets.UTF_8);
+		hints.put(EncodeHintType.MARGIN, margin);
+
+        ByteArrayOutputStream stream = new ByteArrayOutputStream();
+        
+        BitMatrix bitMatrix = new MultiFormatWriter().encode(url, BarcodeFormat.QR_CODE, width, height, hints);
+        MatrixToImageWriter.writeToStream(bitMatrix, "png", stream);
+
+		ByteArrayInputStream input = new ByteArrayInputStream(stream.toByteArray());
+        return ImageIO.read(input);
+	}
+
+
+}