需求:通过程序将rgb转为cmyk颜色模式必须与Adobe Illustrator转化的效果一致
引用JAI依赖库
<dependency>
<groupId>javax.media.jai</groupId>
<artifactId>com.springsource.javax.media.jai.codec</artifactId>
<version>1.1.3</version>
</dependency>
/**
* rgb转为cmyk
* @throws IOException
*/
public static void rgbToCmyk() throws IOException {
String pathName="D:\\service\\IMAGE-RGB.jpg";
BufferedImage rgbImage = ImageIO.read(new File(pathName));
BufferedImage cmykImage = null;
ColorSpace cpace = new ICC_ColorSpace(ICC_Profile.getInstance("C:\\Windows\\System32\\spool\\drivers\\color\\JapanColor2001Coated.icc"));
ColorConvertOp op = new ColorConvertOp(rgbImage.getColorModel().getColorSpace(), cpace, null);
cmykImage = op.filter(rgbImage, null);
String newFileName = "D:\\service\\IMAGE-CMYK.tif";
JAI.create("filestore", cmykImage, newFileName, "TIFF");
}
注意:
转换结果不相同的原因,可能是由于采用的ICC配置文件与Adobe Illustrator不一致
解决方案
1、打开Adobe Illustrator,点击顶部菜单【编辑】,点击【颜色设置】,查看CMYK采用的ICC配置文件
2、Windows ICC配置文件系统路径:C:\Windows\System32\spool\drivers\color\ 找到对应的ICC配置文件,并在程序转换过程中采用该文件
名词解释:
ICC全称:International Color Consortium(国际色彩联盟)
CMYK(印刷色彩模式)