Чтение и запись CMYK TIFF в Java 9 - PullRequest
1 голос
/ 30 марта 2019

Моя цель здесь - прочитать изображение CMYK Tiff, связываться с пикселями, а затем записать новое изображение CMYK Tiff. Мне трудно найти какой-либо пример для этого, и любая помощь будет принята с благодарностью. Первоначально я делал это с изображениями в формате RGB JPEG без проблем, используя такой код:

// read input image
BufferedImage in = ImageIO.read(inputJPGAsFile);

// made output image that is same size as input image
FinalImage = new BufferedImage(in.getWidth(), in.getHeight(), BufferedImage.TYPE_INT_ARGB);

// mess with pixels in output image

// write as JPG
ImageIO.write(FinalImage, "JPEG", outputJPGAsFile);

Однако сейчас я пытаюсь выяснить, как изменить это для работы с CMYK Tiffs. Не похоже, что есть тип для BufferedImage, который будет что-то вроде "TYPE_INT_CMYK". Итак, я пытался использовать ColorModel входного изображения, но это вылетает со следующей ошибкой Exception in thread "JavaFX Application Thread" java.lang.IllegalArgumentException: Unknown color space. Любая помощь по этому вопросу будет принята с благодарностью.

// read input image
BufferedImage in = ImageIO.read(inputTiffAsFile);

// get the CMYK color space of input image
ColorModel colorModel = in.getColorModel();
BufferedImage FinalImage = new BufferedImage(colorModel, colorModel.createCompatibleWritableRaster(100, 100), colorModel.isAlphaPremultiplied(), null);

// Copy in to FinalImage with some pixel manipulation

// write final image
ImageIO.write(FinalImage, "TIFF", outputTiffAsFile);

Кроме того, я поставил java 9, потому что это то, что я использовал, но я могу перейти на более новую версию, если это облегчит задачу. Спасибо!

...