我正在尝试将rgb中的jpeg图像转换为CMYK颜色空间。唯一的问题是我的最终输出始终是黑色图像。但有趣的是MAC中的预览应用程序正确显示图像。似乎没有一个成功的rgb到cmyk转换的例子我到目前为止看到的任何地方。下面是我用于尝试转换的代码。此代码工作正常如果我正在使用RGB ICC配置文件执行转换为rgb。非常感谢任何指导。
import javax.imageio.ImageIO;
public class TestClass {
public static void main(String[] args) throws Exception {
BufferedImage cmykImage = ImageIO.read(new File(
"CMYK_Sample.jpg"));
BufferedImage rgbImage = null;
ColorSpace cpace = new ICC_ColorSpace(ICC_Profile.getInstance(TestClass.class.getClassLoader().getResourceAsStream("icc/USWebCoatedSWOP.icc")));
ColorConvertOp op = new ColorConvertOp(cpace, null);
rgbImage = op.filter(cmykImage, null);
ImageIO.write(rgbImage, "JPEG", new File("CMYK_Sample_RGB_OUTPUT2.jpg"));
}
}
答案 0 :(得分:1)
CMYK用于打印。因此,除了pdf和postscript文件之外,几乎没有可能展示它。 JPEG几乎只能显示RGB。所以,在你的最后一行ImageIO.write中,你试图将cmyk读作RGB。这是问题所在。
JPEG中的CMYK:“Adobe Photoshop和其他一些面向印前的应用程序将产生 要求从CMYK图像模式保存JPEG时,需要四通道CMYK JPEG文件。 几乎没有任何不精通印前的人会应付CMYK JPEG(或任何 其他CMYK格式)。制作用于Web的JPEG时,请确保 从RGB或灰度模式中保存。“(http://www.faqs.org/faqs/jpeg-faq/part1/)
至于在java中显示CMYK文件,请使用java-2d(http://download.oracle.com/javase/1.3/docs/guide/2d/spec/j2d-color.fm2.html)