我正在使用Scalr来调整图像大小。我的一些图片有问题。 Scalr正在改变调整大小的图像的颜色。 简而言之,这是我的代码的轮廓。 我从字节数组中读取文件:
BufferedImage image = ImageIO.read(bis);
然后我使用scalr调整图像大小:
Scalr.resize(image,
Scalr.Method.ULTRA_QUALITY, Scalr.Mode.AUTOMATIC, targetWidth, targetHeight);
然后,我将其写入输出文件:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(bufferedImage, extension, baos);
调整大小之前和之后的图像类型相同,等于TYPE_4BYTE_ABGR。
原始图片:
调整大小后的图片:
答案 0 :(得分:0)
我遇到了同样的问题。要解决此问题,您应该删除图像的 alpha 通道(如果存在)。
public BufferedImage dropAlphaChannel(BufferedImage src) {
BufferedImage convertedImg = new BufferedImage(src.getWidth(), src.getHeight(), BufferedImage.TYPE_INT_RGB);
convertedImg.getGraphics().drawImage(src, 0, 0, null);
return convertedImg;
}
if (originalImage.getColorModel().hasAlpha()) {
originalImage = dropAlphaChannel(originalImage);
}