Looly 5 年 前
コミット
fb2e118d91

+ 3 - 1
CHANGELOG.md

@@ -3,9 +3,11 @@
 
 -------------------------------------------------------------------------------------------------------------
 
-## 5.3.11 (2020-07-23)
+## 5.3.11 (2020-07-25)
 
 ### 新特性
+* 【captcha】     AbstractCaptcha增加getImageBase64Data方法(pr#985@Github)
+
 ### Bug修复
 
 -------------------------------------------------------------------------------------------------------------

+ 4 - 2
hutool-captcha/src/main/java/cn/hutool/captcha/AbstractCaptcha.java

@@ -7,6 +7,7 @@ import cn.hutool.core.img.ImgUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.io.IORuntimeException;
 import cn.hutool.core.io.IoUtil;
+import cn.hutool.core.util.URLUtil;
 
 import java.awt.AlphaComposite;
 import java.awt.Color;
@@ -198,9 +199,10 @@ public abstract class AbstractCaptcha implements ICaptcha {
 	 * 获取图片带文件格式的 Base64
 	 *
 	 * @return 图片带文件格式的 Base64
+	 * @since 5.3.11
 	 */
-	public String getImageBase64Full(){
-		return "data:image/png;base64," + Base64.encode(getImageBytes());
+	public String getImageBase64Data(){
+		return URLUtil.getDataUriBase64("image/png", getImageBase64());
 	}
 
 	/**

+ 19 - 0
hutool-core/src/main/java/cn/hutool/core/util/URLUtil.java

@@ -773,6 +773,25 @@ public class URLUtil {
 	}
 
 	/**
+	 * Data URI Scheme封装,数据格式为Base64。data URI scheme 允许我们使用内联(inline-code)的方式在网页中包含数据,<br>
+	 * 目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入。常用于将图片嵌入网页。
+	 *
+	 * <p>
+	 * Data URI的格式规范:
+	 * <pre>
+	 *     data:[&lt;mime type&gt;][;charset=&lt;charset&gt;][;&lt;encoding&gt;],&lt;encoded data&gt;
+	 * </pre>
+	 *
+	 * @param mimeType 可选项(null表示无),数据类型(image/png、text/plain等)
+	 * @param data     编码后的数据
+	 * @return Data URI字符串
+	 * @since 5.3.11
+	 */
+	public static String getDataUriBase64(String mimeType, String data) {
+		return getDataUri(mimeType, null, "BASE64", data);
+	}
+
+	/**
 	 * Data URI Scheme封装。data URI scheme 允许我们使用内联(inline-code)的方式在网页中包含数据,<br>
 	 * 目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入。常用于将图片嵌入网页。
 	 *