使用ImageIO.read()方法,加载图片为BufferedImage对象时,对于某些图片,会出现变红的case

兼容ImageIO读取jpeg图片变红

问题重现

有问题的图片:

兼容ImageIO读取jpeg图片变红

测试验证代码

兼容ImageIO读取jpeg图片变红

debug截图如下:

兼容ImageIO读取jpeg图片变红

问题兼容

不实用ImageIO来加载图片,改用Toolkit来实现图片读取,然后再将读取到的图片绘制到BufferedImage对象上

兼容ImageIO读取jpeg图片变红

实测验证

兼容ImageIO读取jpeg图片变红

为什么会出现这个问题:

ImageIO.read()方法读取图片时可能存在不正确处理图片ICC信息的问题,ICC为JPEG图片格式中的一种头部信息,导致渲染图片前景色时蒙上一层红色。

相关文章: