From dd7f04af44c4c5b8a042e1bc6d22b649429ecc24 Mon Sep 17 00:00:00 2001 From: Looly Date: Thu, 30 Jul 2020 10:06:42 +0800 Subject: [PATCH] fix img --- CHANGELOG.md | 1 + .../src/main/java/cn/hutool/core/img/Img.java | 14 +++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 979c540f3..dd87252ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ ### 新特性 * 【captcha】 AbstractCaptcha增加getImageBase64Data方法(pr#985@Github) * 【core 】 增加PhoneUtil(pr#990@Github) +* 【core 】 改进Img,目标图片类型未定义使用源图片类型(issue#I1PB0B@Gitee) ### Bug修复 diff --git a/hutool-core/src/main/java/cn/hutool/core/img/Img.java b/hutool-core/src/main/java/cn/hutool/core/img/Img.java index f927cb92a..d16de3a45 100644 --- a/hutool-core/src/main/java/cn/hutool/core/img/Img.java +++ b/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; }