兼容ImageIO读取jpeg图片变红

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

兼容ImageIO读取jpeg图片变红_第1张图片

问题重现

有问题的图片:

兼容ImageIO读取jpeg图片变红_第2张图片

测试验证代码

兼容ImageIO读取jpeg图片变红_第3张图片

debug截图如下:

兼容ImageIO读取jpeg图片变红_第4张图片

问题兼容

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

兼容ImageIO读取jpeg图片变红_第5张图片

实测验证

兼容ImageIO读取jpeg图片变红_第6张图片

为什么会出现这个问题:

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

你可能感兴趣的:(兼容ImageIO读取jpeg图片变红)