Scalr图像调整大小会更改输出中的背景颜色

时间:2016-11-17 17:40:49

标签: java image resize image-resizing imgscalr

我正在使用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。

原始图片:

original image

调整大小后的图片:

image after resizing

1 个答案:

答案 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);
}

Ref