【问题标题】:JMagick - How to convert a picture from CMYK to RGB?JMagick - 如何将图片从 CMYK 转换为 RGB?
【发布时间】:2011-09-21 13:34:55
【问题描述】:

我知道有另一个帖子在处理这个问题 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?

谢谢。

颜色空间 AFTER => 1 (RGB)

【问题讨论】:

  • 无论您最终采用哪种方式,都要非常注意此过程中的效果和颜色配置文件的需求。
  • 写图的时候,为什么设置的ColorSpace会丢失? imageCMYK.writeImage(info);

标签: java imagemagick rgb cmyk jmagick


【解决方案1】:

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


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

public boolean rgbTransformImage(int colorspace) throws 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) {
    ...
}

【讨论】:

  • 感谢您的回答!但是仍然存在一个问题,因为一旦您编写了图像: imageCMYK.writeImage(info); System.out.println("ColorSpace AFTER => " + imageCMYK.getColorspace()); RGBColorSpace 回来了.... 为什么?
  • 哦,我看到你正在处理".gif" 文件。我认为他们不支持 CMYK。更新答案!
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2020-07-03
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    • 2021-03-15
    • 2023-03-25
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多