Преобразование RGB JPEG в CMYK JPEG с помощью ColorConverterOp Java

Я пытаюсь преобразовать изображение jpeg в цветовое пространство RGB в цветовое пространство CMYK. Единственная проблема заключается в том, что мой конечный результат всегда представляет собой черное изображение. Но что интересно, приложение для предварительного просмотра в MAC показывает изображение правильно. Кажется, нигде из тех, что я искал, не было примеров успешного преобразования rgb в cmyk. Ниже приведен код, который я использую для попытки преобразования. Этот код отлично работает, если я выполняю преобразование в rgb с использованием профиля RGB ICC. Любое руководство приветствуется.

import javax.imageio.ImageIO;

public class TestClass {

  public static void main(String[] args) throws Exception {
    BufferedImage cmykImage = ImageIO.read(new File(
            "CMYK_Sample.jpg"));     
    BufferedImage rgbImage = null;

    ColorSpace cpace = new ICC_ColorSpace(ICC_Profile.getInstance(TestClass.class.getClassLoader().getResourceAsStream("icc/USWebCoatedSWOP.icc")));

    ColorConvertOp op = new ColorConvertOp(cpace, null);       
    rgbImage = op.filter(cmykImage, null);

    ImageIO.write(rgbImage, "JPEG", new File("CMYK_Sample_RGB_OUTPUT2.jpg"));

  }
}

person mtanzania    schedule 15.11.2011    source источник
comment
Откуда вы знаете, что изображение всегда черное? Какое программное обеспечение вы используете, чтобы определить это, и почему это программное обеспечение должно быть более надежным, чем приложение для предварительного просмотра на Mac?   -  person Codo    schedule 16.11.2011
comment
Хорошо, может быть, правильным термином будет то, что он кажется черным, и это верно в Gimp, Photoshop и приложении предварительного просмотра Ubuntu и средстве просмотра изображений. Что касается надежности, я не думаю, что подразумевал, что я думаю, что один из них более надежен, чем другой. Я только что указал, что предварительный просмотр Mac, кажется, показывает мне то, что я ожидаю, и это не то же самое для других приложений.   -  person mtanzania    schedule 18.11.2011


Ответы (1)


CMYK для печати. Таким образом, есть несколько возможностей показать это, кроме файлов pdf и postscript. JPEG может отображать почти только RGB. Итак, в вашей последней строке ImageIO.write вы пытаетесь прочитать cmyk как RGB. Вот в чем проблема.

CMYK в JPEG: «Adobe Photoshop и некоторые другие приложения, ориентированные на допечатную подготовку, будут создавать четырехканальные файлы CMYK JPEG при запросе на сохранение JPEG из режима изображения CMYK. формате в этом отношении). При создании файлов JPEG для использования в Интернете обязательно сохраняйте их в режиме RGB или в оттенках серого». (http://www.faqs.org/faqs/jpeg-faq/part1/)

Что касается отображения файлов CMYK в java, используйте java-2d (http://download.oracle.com/javase/1.3/docs/guide/2d/spec/j2d-color.fm2.html)

person Gangnus    schedule 18.11.2011