我的目标是读取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,因为这是我一直在使用的,但是如果这样可以简化工作,我可以升级到新版本。谢谢!