JMagick - Как конвертировать картинку из CMYK в RGB? - PullRequest
2 голосов
/ 21 сентября 2011

Я знаю, что существует еще один пост, посвященный этой проблеме Как конвертировать цветовое пространство с помощью 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 ДО => 12 (CMYK)

Как правильно конвертировать изображение из CMYK в RGB?

Спасибо.

ColorSpace AFTER => 1 (RGB)

Ответы [ 2 ]

2 голосов
/ 21 сентября 2011

Обновление: Вы используете GIF изображения. Они не поддерживают "CMYK", поэтому преобразование не будет работать для вас (см. это сообщение на форуме на сайте imagemagick)!


Используйте MagicImage.rgbTransformImage(ColorspaceType.CMYKColorspace). Из API:

public boolean rgbTransformImage (int colorspace) выдает MagickException

Преобразует эталонное изображение из RGB в альтернативном цветовой. Матрицы преобразования не являются стандартными: веса пересчитываются в нормализованный диапазон преобразованных значений, чтобы быть [0..MaxRGB].


* * 1 022 Пример: * 1 023 *
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) {
    ...
}
0 голосов
/ 22 сентября 2011

Это все равно не будет работать для других форматов изображений, таких как PNG.

...