我知道还有另一篇文章处理这个问题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)
答案 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。