工业标准色

工业标准色

ISOcoated_v2_300_eci.icc 是一个工业的色彩标准文件。

  • CMYK 也称作印刷色彩模式。它和 RGB 相比最大不同是,RGB 模式是发光的色彩模式,你在一间黑暗的房间内仍然可以看见萤幕上的内容。
  • CMYK 是一种依靠反光的色彩模式,我们能阅读报纸的内容是为什么呢?是因阳光或灯光照射到报纸上,再把内容反射到我们的眼中。

CMYK 是需要有外界光源的情况下才可以看到的。所以在黑暗房间内是无法阅读的。只要是在印刷品上看到的图像,就是 CMYK 模式表现的。

<dependency>
    <groupId>javax.media.jai</groupId>
    <artifactId>com.springsource.javax.media.jai.codec</artifactId>
    <version>1.1.3</version>
</dependency>
class A{
    /**
	 * 将图片为 rgb 转化为 cmyk
	 * @param inputStream 图片输入流
	 * @param fileName 图片名词(绝对路径)
	 * @param newFileName 图片保存路径(绝对路径)(如果没有参数,则生成的图片在当前目录下,且格式为tif)
	 */
	public static void rgbToCmyk(InputStream inputStream,String fileName,String...newFileName) throws IOException{

		BufferedImage rgbImage = ImageIO.read(inputStream);
		BufferedImage cmykImage = null;
		ColorSpace cpace = new ICC_ColorSpace(ICC_Profile.getInstance(TestImageBinary.class.getClassLoader().getResourceAsStream("ISOcoated_v2_300_eci.icc")));
		ColorConvertOp op = new ColorConvertOp(rgbImage.getColorModel().getColorSpace(), cpace, null);
		cmykImage = op.filter(rgbImage, null);
		if(newFileName.length>0&&newFileName[0]!=null) {
			String targetFileName=fileName.substring(0,fileName.lastIndexOf(".")+1)+"tif";
			JAI.create("filestore", cmykImage,targetFileName,"TIFF");
			cmykImage.flush();
			base64StringToImage(targetFileName,newFileName[0]);//转成对应格式
			File file=new File(fileName);
			if(file.exists())
				file.delete();
		}else {
			String targetFileName=fileName.substring(0,fileName.lastIndexOf(".")+1)+"tif";
			JAI.create("filestore", cmykImage, targetFileName, "TIFF");
		}
	}
}

posted on 2024-06-13 21:32  疯狂的妞妞  阅读(8)  评论(0编辑  收藏  举报

导航