2

我正在尝试将 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"));

  }
}
4

1 回答 1

1

CMYK 用于印刷。因此,除了 pdf 和 postscript 文件之外,几乎没有展示它的可能性。JPEG 几乎只能显示 RGB。因此,在最后一行 ImageIO.write 中,您尝试将 cmyk 读取为 RGB。这是问题所在。

JPEG 中的 CMYK:“当被要求从 CMYK 图像模式保存 JPEG 时,Adobe Photoshop 和一些其他面向印前的应用程序将生成四通道 CMYK JPEG 文件。几乎没有任何不熟悉印前的东西可以处理 CMYK JPEG(或任何其他 CMYK “ (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)

于 2011-11-18T22:39:39.173 回答