Looly 5 年之前
父节点
当前提交
dd7f04af44
共有 2 个文件被更改,包括 12 次插入3 次删除
  1. 1 0
      CHANGELOG.md
  2. 11 3
      hutool-core/src/main/java/cn/hutool/core/img/Img.java

+ 1 - 0
CHANGELOG.md

@@ -8,6 +8,7 @@
 ### 新特性
 * 【captcha】     AbstractCaptcha增加getImageBase64Data方法(pr#985@Github)
 * 【core   】     增加PhoneUtil(pr#990@Github)
+* 【core   】     改进Img,目标图片类型未定义使用源图片类型(issue#I1PB0B@Gitee)
 
 ### Bug修复
 

+ 11 - 3
hutool-core/src/main/java/cn/hutool/core/img/Img.java

@@ -134,7 +134,7 @@ public class Img implements Serializable {
 	}
 
 	/**
-	 * 构造
+	 * 构造,目标图片类型取决于来源图片类型
 	 *
 	 * @param srcImage 来源图片
 	 */
@@ -146,13 +146,21 @@ public class Img implements Serializable {
 	 * 构造
 	 *
 	 * @param srcImage        来源图片
-	 * @param targetImageType 目标图片类型
+	 * @param targetImageType 目标图片类型,null则读取来源图片类型
 	 * @since 5.0.7
 	 */
 	public Img(BufferedImage srcImage, String targetImageType) {
 		this.srcImage = srcImage;
 		if (null == targetImageType) {
-			targetImageType = ImgUtil.IMAGE_TYPE_JPG;
+			if (srcImage.getType() == BufferedImage.TYPE_INT_ARGB
+					|| srcImage.getType() == BufferedImage.TYPE_INT_ARGB_PRE
+					|| srcImage.getType() == BufferedImage.TYPE_4BYTE_ABGR
+					|| srcImage.getType() == BufferedImage.TYPE_4BYTE_ABGR_PRE
+			) {
+				targetImageType = ImgUtil.IMAGE_TYPE_PNG;
+			} else {
+				targetImageType = ImgUtil.IMAGE_TYPE_JPG;
+			}
 		}
 		this.targetImageType = targetImageType;
 	}