ソースを参照

fix qrcode bug

Looly 5 年 前
コミット
3421a8f54d

+ 2 - 0
CHANGELOG.md

@@ -22,6 +22,8 @@
 * 【core   】     修复UrlBuilder地址参数问题(issue#I1UWCA@Gitee)
 * 【core   】     修复StrUtil.toSymbolCase转换问题(issue#1075@Github)
 * 【log    】     修复打印null对象显示{msg}异常问题(issue#1084@Github)
+* 【extra  】     修复ServletUtil.getReader中未关闭的问题
+* 【extra  】     修复QrCodeUtil在新版本zxing报错问题(issue#1088@Github)
 
 -------------------------------------------------------------------------------------------------------------
 

+ 8 - 9
hutool-extra/src/main/java/cn/hutool/extra/qrcode/QrConfig.java

@@ -1,18 +1,17 @@
 package cn.hutool.extra.qrcode;
 
+import cn.hutool.core.img.ImgUtil;
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.util.CharsetUtil;
+import com.google.zxing.EncodeHintType;
+import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
+
 import java.awt.Color;
 import java.awt.Image;
 import java.io.File;
 import java.nio.charset.Charset;
 import java.util.HashMap;
 
-import com.google.zxing.EncodeHintType;
-import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
-
-import cn.hutool.core.img.ImgUtil;
-import cn.hutool.core.io.FileUtil;
-import cn.hutool.core.util.CharsetUtil;
-
 /**
  * 二维码设置
  * 
@@ -34,8 +33,8 @@ public class QrConfig {
 	protected Integer backColor = WHITE;
 	/** 边距1~4 */
 	protected Integer margin = 2;
-	/** 设置二维码中的信息量,可设置0-40的整数,二维码图片也会根据qrVersion而变化,0表示根据传入信息自动变化 */
-	protected Integer qrVersion = 0;
+	/** 设置二维码中的信息量,可设置1-40的整数 */
+	protected Integer qrVersion;
 	/** 纠错级别 */
 	protected ErrorCorrectionLevel errorCorrection = ErrorCorrectionLevel.M;
 	/** 编码 */

+ 3 - 2
hutool-extra/src/main/java/cn/hutool/extra/servlet/ServletUtil.java

@@ -27,6 +27,7 @@ import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.BufferedInputStream;
+import java.io.BufferedReader;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -91,8 +92,8 @@ public class ServletUtil {
 	 * @since 4.0.2
 	 */
 	public static String getBody(ServletRequest request) {
-		try {
-			return IoUtil.read(request.getReader());
+		try(final BufferedReader reader = request.getReader()) {
+			return IoUtil.read(reader);
 		} catch (IOException e) {
 			throw new IORuntimeException(e);
 		}

+ 4 - 2
hutool-extra/src/test/java/cn/hutool/extra/qrcode/QrCodeUtilTest.java

@@ -4,10 +4,12 @@ import cn.hutool.core.codec.Base64;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.lang.Console;
 import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
+import org.junit.Assert;
 import org.junit.Ignore;
 import org.junit.Test;
 
 import java.awt.Color;
+import java.awt.image.BufferedImage;
 import java.io.File;
 
 /**
@@ -19,9 +21,9 @@ import java.io.File;
 public class QrCodeUtilTest {
 
 	@Test
-	@Ignore
 	public void generateTest() {
-		QrCodeUtil.generate("https://hutool.cn/", 300, 300, FileUtil.file("e:/qrcode.jpg"));
+		final BufferedImage image = QrCodeUtil.generate("https://hutool.cn/", 300, 300);
+		Assert.assertNotNull(image);
 	}
 
 	@Test