1

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

原图:

原始图像

调整大小后的图像:

调整大小后的图像

4

1 回答 1

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

参考

于 2021-04-03T04:11:51.867 回答