mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-04-19 03:01:48 +08:00
fix image type bug
This commit is contained in:
parent
80dd13773a
commit
46635600b5
@ -398,10 +398,10 @@ public class ImgUtil {
|
|||||||
int srcWidth = srcImage.getWidth(null); // 源图宽度
|
int srcWidth = srcImage.getWidth(null); // 源图宽度
|
||||||
int srcHeight = srcImage.getHeight(null); // 源图高度
|
int srcHeight = srcImage.getHeight(null); // 源图高度
|
||||||
|
|
||||||
if(srcWidth < destWidth){
|
if (srcWidth < destWidth) {
|
||||||
destWidth = srcWidth;
|
destWidth = srcWidth;
|
||||||
}
|
}
|
||||||
if(srcHeight < destHeight){
|
if (srcHeight < destHeight) {
|
||||||
destHeight = srcHeight;
|
destHeight = srcHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1123,7 +1123,7 @@ public class ImgUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* {@link Image} 转 {@link RenderedImage}<br>
|
* {@link Image} 转 {@link RenderedImage}<br>
|
||||||
* 首先尝试强转,否则新建一个{@link BufferedImage}后重新绘制
|
* 首先尝试强转,否则新建一个{@link BufferedImage}后重新绘制,使用 {@link BufferedImage#TYPE_INT_RGB} 模式。
|
||||||
*
|
*
|
||||||
* @param img {@link Image}
|
* @param img {@link Image}
|
||||||
* @return {@link BufferedImage}
|
* @return {@link BufferedImage}
|
||||||
@ -1139,7 +1139,7 @@ public class ImgUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* {@link Image} 转 {@link BufferedImage}<br>
|
* {@link Image} 转 {@link BufferedImage}<br>
|
||||||
* 首先尝试强转,否则新建一个{@link BufferedImage}后重新绘制
|
* 首先尝试强转,否则新建一个{@link BufferedImage}后重新绘制,使用 {@link BufferedImage#TYPE_INT_RGB} 模式
|
||||||
*
|
*
|
||||||
* @param img {@link Image}
|
* @param img {@link Image}
|
||||||
* @return {@link BufferedImage}
|
* @return {@link BufferedImage}
|
||||||
@ -1154,27 +1154,39 @@ public class ImgUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* {@link Image} 转 {@link BufferedImage}<br>
|
* {@link Image} 转 {@link BufferedImage}<br>
|
||||||
* 如果源图片的RGB模式与目标模式一致,则直接转换,否则重新绘制
|
* 如果源图片的RGB模式与目标模式一致,则直接转换,否则重新绘制<br>
|
||||||
|
* 默认的,png图片使用 {@link BufferedImage#TYPE_INT_ARGB}模式,其它使用 {@link BufferedImage#TYPE_INT_RGB} 模式
|
||||||
*
|
*
|
||||||
* @param image {@link Image}
|
* @param image {@link Image}
|
||||||
* @param imageType 目标图片类型
|
* @param imageType 目标图片类型,例如jpg或png等
|
||||||
* @return {@link BufferedImage}
|
* @return {@link BufferedImage}
|
||||||
* @since 4.3.2
|
* @since 4.3.2
|
||||||
*/
|
*/
|
||||||
public static BufferedImage toBufferedImage(Image image, String imageType) {
|
public static BufferedImage toBufferedImage(Image image, String imageType) {
|
||||||
|
final int type = imageType.equalsIgnoreCase(IMAGE_TYPE_PNG)
|
||||||
|
? BufferedImage.TYPE_INT_ARGB
|
||||||
|
: BufferedImage.TYPE_INT_RGB;
|
||||||
|
return toBufferedImage(image, type);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link Image} 转 {@link BufferedImage}<br>
|
||||||
|
* 如果源图片的RGB模式与目标模式一致,则直接转换,否则重新绘制
|
||||||
|
*
|
||||||
|
* @param image {@link Image}
|
||||||
|
* @param imageType 目标图片类型,{@link BufferedImage}中的常量,例如黑白等
|
||||||
|
* @return {@link BufferedImage}
|
||||||
|
* @since 5.4.7
|
||||||
|
*/
|
||||||
|
public static BufferedImage toBufferedImage(Image image, int imageType) {
|
||||||
BufferedImage bufferedImage;
|
BufferedImage bufferedImage;
|
||||||
if (false == imageType.equalsIgnoreCase(IMAGE_TYPE_PNG)) {
|
|
||||||
// 当目标为非PNG类图片时,源图片统一转换为RGB格式
|
|
||||||
if (image instanceof BufferedImage) {
|
if (image instanceof BufferedImage) {
|
||||||
bufferedImage = (BufferedImage) image;
|
bufferedImage = (BufferedImage) image;
|
||||||
if (BufferedImage.TYPE_INT_RGB != bufferedImage.getType()) {
|
if (imageType != bufferedImage.getType()) {
|
||||||
bufferedImage = copyImage(image, BufferedImage.TYPE_INT_RGB);
|
bufferedImage = copyImage(image, imageType);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
bufferedImage = copyImage(image, BufferedImage.TYPE_INT_RGB);
|
bufferedImage = copyImage(image, imageType);
|
||||||
}
|
|
||||||
} else {
|
|
||||||
bufferedImage = toBufferedImage(image);
|
|
||||||
}
|
}
|
||||||
return bufferedImage;
|
return bufferedImage;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user