您的位置:首页 > 其它

ImageIO.read(File file) 报异常"Unsupported Image Type",不支持CMYK格式图片问题解析和解决方式

2017-10-17 10:13 861 查看
ImageIO.read(File file)报异常"Unsupported Image Type",是因为其内部读取文件的类JPEGImageReader只能读取RGB color model,而你的图片可能被ps过,color model是CMYK。

如果你坚持要读取CMYK图片,你需要转换图片,使用一下代码。

BufferedImage bufferedImage = null;
try {
bufferedImage = ImageIO.read(imageFile.getInputStream());
} catch (final IOException e) {
if ("Unsupported Image Type".equals(e.getMessage())) {
// Find a suitable ImageReader
final 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)
final ImageInputStream input = ImageIO
.createImageInputStream(imageFile.getInputStream());
reader.setInput(input);
// Read the image raster
final Raster raster = reader.readRaster(0, null);

// Create a new RGB image
final BufferedImage bi = new BufferedImage(raster.getWidth(),
raster.getHeight(), BufferedImage.TYPE_4BYTE_ABGR);
// Fill the new image with the old raster
bi.getRaster().setRect(raster);
bufferedImage = bi;
}
}
final int width = bufferedImage.getWidth();
final int height = bufferedImage.getHeight();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐