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

标签 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)

最佳答案

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


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

public boolean rgbTransformImage(int colorspace) throws MagickException

Converts the reference image from RGB to an alternate colorspace. The transformation matrices are not the standard ones: the weights are rescaled to normalized the range of the transformed values to be [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) {
    ...
}

关于java - JMagick - 如何将图片从 CMYK 转换为 RGB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7500667/

相关文章:

java - Java 如何处理单个 IF 语句中的多个条件

java - 如何将在一个方法中初始化的变量使用到另一个类的另一个方法中

ruby - RMagick 从图像中删除白色背景并使其透明

php - 如何使用 imagemagick 创建水印

python - 将 .overrideColor 值分配给 Maya 中的按钮

java - 如何在 Java 中按 <TD> 日期对 HTML 元素进行排序并按 <A> 删除重复项?

imagemagick - imagemagick 命令的一些示例可以在 magick 和输入文件名之间提供选项

c++ - 将灰度转换为Rgb

opencv - YUV2 数据的 channel 和位值

java - 选择大小变化的字符串中数据的某些部分的最佳方法