【问题标题】:Scalr image resize changes background color on output缩放图像调整大小在输出时更改背景颜色
【发布时间】:2016-11-17 17:40:49
【问题描述】:

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

原图:

调整大小后的图像:

【问题讨论】:

  • 尝试使用“png”作为扩展名

标签: java image resize image-resizing imgscalr


【解决方案1】:

我遇到了同样的问题。要解决此问题,您应该删除图像的 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

【讨论】:

    猜你喜欢
    • 2013-06-08
    • 2016-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-05
    相关资源
    最近更新 更多