我有把一个字节数组的BufferedImage使用ImageIO的一个代码。
public void readImage(byte[] imageBytes) {
ByteArrayInputStream inputStream = new ByteArrayInputStream(imageBytes);
BufferedImage bufferedImage = null;
try {
bufferedImage = ImageIO.read(inputStream);
} catch (Exception e) {
e.printStackTrace();
}
// do something with bufferedImage
}
但我发现,对于某些JPEG图像,它抛出一个CMMException,每一次。
这里的堆栈跟踪:
java.awt.color.CMMException: Cannot get color transform
at sun.java2d.cmm.lcms.LCMS.createNativeTransform(Native Method)
at sun.java2d.cmm.lcms.LCMSTransform.<init>(LCMSTransform.java:103)
at sun.java2d.cmm.lcms.LCMS.createTransform(LCMS.java:75)
at java.awt.image.ColorConvertOp.filter(ColorConvertOp.java:552)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.acceptPixels(JPEGImageReader.java:1251)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readImage(Native Method)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:1219)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:1022)
at javax.imageio.ImageIO.read(ImageIO.java:1438)
at javax.imageio.ImageIO.read(ImageIO.java:1342)
而这里的是造成麻烦的照片
我搜索在谷歌的解决方案,并发现后承认问题,并建议使用JAI对于其中ImageIO的失败案例。 但我有疑问,作为后,从4年前了,我似乎无法找到关于JAI多的信息,导致我相信这不是理想的解决方案。 是否有任何其他方式字节数组转换为缓冲的图像,而不ImageIO的或JAI? 如果今天的固溶体JAI是静止的,可能有人告诉我该怎么做,使用JAI?
提前致谢!