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

Java 如何将图片从CMYK转换为RGB?,java,imagemagick,rgb,cmyk,jmagick,Java,Imagemagick,Rgb,Cmyk,Jmagick,我知道还有另外一个帖子处理这个问题,但有一点我不明白: String baseName = "Pictures/"; String fileName = "dragon.gif"; MagickImage imageCMYK; try { ImageInfo info = new ImageInfo( baseName + fileName); info.setColorspace(ColorspaceType.CMYKColorspace

我知道还有另外一个帖子处理这个问题,但有一点我不明白:

    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不会像我获得的那样保留:

前颜色空间=>12(CMYK)

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

谢谢


颜色空间=>1(RGB)

更新:您使用的是
GIF
图像。他们不支持“CMYK”,所以转换对你不起作用(参见imagemagick网站上的论坛帖子)


使用。从API:

公共布尔值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) {
    ...
}

这对其他图像格式(如PNG)仍然不起作用。

无论您以何种方式结束此操作,都要注意此过程中的效果和对颜色配置文件的需要。在编写图像时,为什么会丢失设置的颜色空间?imageCMYK.writeImage(信息);谢谢你的回答!但是仍然有一个问题,因为一旦你写了你的图像:imageCMYK.writeImage(info);System.out.println(“ColorSpace AFTER=>”+imageCMYK.getColorspace());RGBColorSpace返回。。。。为什么?哦,我看到你在使用
“.gif”
文件。我认为他们不支持CMYK。更新答案!