ImageIO导出图片变色是ImageIO.Read方法的问题,而CMYK颜色类型的图片则会使ImageIO抛出异常"Unsupported Image Type",网上查阅了很多资料,使用ImageIcon的方法读取图片可以解决图片变色的问题,但是解决不了CMYK颜色类型的图片,都无法正确解决问题,本次记一下解决方案,能同时处理图片变色和CMYK颜色。具体方法如下:
1、导入ImageIO扩展颜色依赖
<!-- 导入该依赖可以解决JPEG图片的CMYK颜色问题,直接使用read方法不会抛出异常 -->
<dependency>
<groupId>com.twelvemonkeys.imageio</groupId>
<artifactId>imageio-jpeg</artifactId>
<version>3.6</version>
</dependency>
2、读取到图片后,再用RGB颜色画一遍可解决变色问题
//先用read的方法读取一遍
BufferedImage tempImage = ImageIO.read(file);
//再使用RGB颜色画一遍
bufferImg = new BufferedImage(tempImage.getWidth(),tempImage.getHeight(),BufferedImage.TYPE_INT_RGB);
bufferImg.getGraphics().drawImage(tempImage, 0, 0, null);