Java ImageIO IIOException:不支持的图像类型?ImageIO无法读取CMYK编码的图像

时间:2014-06-12 06:53:27

标签: java javax.imageio

如果图像不是RGB颜色,我如何解码图像。它应该通过支持所有格式(JpgPngGif等来解码图像。)任何api都是有解码。

这是失败的代码行。那么哪种方法可以用来重新解决问题。

BufferedImage imgSelected = ImageIO.read(new File("/abs/url/to/file/image.jpg"));

1 个答案:

答案 0 :(得分:2)

您可以在此处获得答案:https://stackoverflow.com/a/2408779/3603806

其中说:

将CMYK图像读入RGB BufferedImage。

File f = new File("/path/imagefile.jpg");

//Find a suitable ImageReader
Iterator readers = ImageIO.getImageReadersByFormatName("JPEG");
ImageReader reader = null;
while(readers.hasNext()) {
    reader = (ImageReader)readers.next();
    if(reader.canReadRaster()) {
        break;
    }
}

//Stream the image file (the original CMYK image)
ImageInputStream input =   ImageIO.createImageInputStream(f); 
reader.setInput(input); 

//Read the image raster
Raster raster = reader.readRaster(0, null); 

//Create a new RGB image
BufferedImage bi = new BufferedImage(raster.getWidth(), raster.getHeight(), 
BufferedImage.TYPE_4BYTE_ABGR); 

//Fill the new image with the old raster
bi.getRaster().setRect(raster);