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

调整大小后的图像:

发布于 2021-04-03 12:11:52
我也有同样的问题。若要解决此问题,应删除图像的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);
}https://stackoverflow.com/questions/40661598
复制相似问题