ImageIO.read(File file) 報異常"Unsupported Image Type",不支持CMYK格式圖片問題解析和解決方式

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();
發佈了42 篇原創文章 · 獲贊 8 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章