2

我知道还有另一篇处理该问题的帖子如何使用 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 不会像我获得的那样保留:

之前的色彩空间 => 12 (CMYK)

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

谢谢。

颜色空间之后 => 1 (RGB)

4

2 回答 2

1

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


使用MagicImage.rgbTransformImage(ColorspaceType.CMYKColorspace). 从 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) {
    ...
}
于 2011-09-21T13:45:15.170 回答
0

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

于 2011-09-22T00:35:18.123 回答