Моя цель здесь - прочитать изображение 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, потому что это то, что я использовал, но я могу перейти на более новую версию, если это облегчит задачу. Спасибо!