我知道存在另一个帖子处理这个问题如何使用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 => 1 (RGB)
更新:您正在使用GIF
图像。他们不支持"CMYK",所以转换不会为你工作(见这个论坛帖子在imagemagick的网站)!
使用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) {
...
}
这对于PNG等其他图像格式仍然不起作用。