JMagick - 如何将图片从CMYK转换为RGB?

时间:2011-09-21 13:34:55

标签: java imagemagick rgb cmyk jmagick

我知道还有另一篇文章处理这个问题How to convert colorspace using JMagick?,但有一些我不明白的事情:

    String baseName = "Pictures/";
    String fileName = "dragon.gif";
     MagickImage imageCMYK;
     try {
     ImageInfo info = new ImageInfo( baseName + fileName);
     info.setColorspace(ColorspaceType.CMYKColorspace);

     System.out.println("ColorSpace BEFORE => " + info.getColorspace());

     imageCMYK = new MagickImage( info );


     System.out.println("ColorSpace AFTER => " +
             imageCMYK.getColorspace());

当我创建新的MagickImage时,我没有保留CMYKColorSpace:

ColorSpace BEFORE => 12(CMYK)

如何正确地将图片从CMYK转换为RGB?

感谢。

ColorSpace AFTER => 1(RGB)

2 个答案:

答案 0 :(得分:2)

更新:您正在使用GIF张图片。他们不支持“CMYK”,因此转换不适合您(请参阅imagemagick网站上的this论坛帖子)!


使用MagicImage.rgbTransformImage(ColorspaceType.CMYKColorspace)。来自API:

  

public boolean rgbTransformImage (int colorspace)抛出MagickException

     

将参考图像从RGB转换为备用颜色空间。变换矩阵不是标准矩阵:权重被重新调整以将变换值的范围标准化为[0..MaxRGB]。


示例:

try {
    MagickImage image = new MagickImage(new ImageInfo(baseName + fileName));

    if (!image.rgbTransformImage(ColorspaceType.CMYKColorspace))
         throw new Exception("Couldn't convert image color space");

    ...
} catch (MagickException e) {
    ...
}

答案 1 :(得分:0)

这仍然不适用于其他图像格式,例如PNG。