我正在使用ImageIO.read
来处理上传的图片文件。代码类似于
BufferedImage bufferedImage = ImageIO.read(new ByteArrayInputStream(image.getContents()));
我设法解决了大部分问题,但是这个让我一无所知。上传的图片具有JCS_YCCK
个人资料,如com.sun.imageio.plugins.jpeg.JPEG
中所定义,com.sun.imageio.plugins.jpeg.JPEGImageReader
不支持。这导致了一个很好的堆栈跟踪,类似于:
Caused by: javax.imageio.IIOException: Unsupported Image Type
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:910)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:885)
at javax.imageio.ImageIO.read(ImageIO.java:1422)
at javax.imageio.ImageIO.read(ImageIO.java:1326)
at com.example.ImageWriter.resizeEmbeddableImageInPlace(ImageWriter.java:231)
如何使用Java的ImageIO处理这种类型的JPEG?
更新:我已经尝试过Commons-Sanselan,答案表明,但不幸的是它不支持JPEG文件:
org.apache.sanselan.ImageReadException: Sanselan cannot read or write JPEG images.
at org.apache.sanselan.formats.jpeg.JpegImageParser.getBufferedImage(JpegImageParser.java:90)
at org.apache.sanselan.Sanselan.getBufferedImage(Sanselan.java:1264)
at org.apache.sanselan.Sanselan.getBufferedImage(Sanselan.java:1231)
答案 0 :(得分:0)
一种可能的解决方案是使用Java Advanced Imaging Image IO扩展。正确安装后,转换即可开箱即用。
问题在于它与Maven的搭配不是很好,所以我问Using Java Advanced Imaging with Maven。如果成功,那么这个答案将被接受。
答案 1 :(得分:-1)
我不知道ImageIO,但您可以使用Commons Sanselan library,它提供了访问各种图像的简便方法。