使用ImageIO读取JCS_YCCK图像 [英] Reading JCS_YCCK images using ImageIO
问题描述
我正在使用 ImageIO.read
来处理上传的图片文件。代码类似于
I'm using ImageIO.read
to process uploaded image files. The code is similar to
BufferedImage bufferedImage = ImageIO.read(new ByteArrayInputStream(image.getContents()));
我设法解决了大部分问题,但是这个让我一无所知。上传的图片有一个 JCS_YCCK
个人资料,如 com.sun.imageio.plugins.jpeg.JPEG
中所定义, com.sun.imageio.plugins.jpeg.JPEGImageReader
不支持。这导致了一个很好的堆栈跟踪,类似于:
I've managed to solve most of the issues, but this one has left me clueless. The uploaded image has a JCS_YCCK
profile, as defined in com.sun.imageio.plugins.jpeg.JPEG
, which is not supported by com.sun.imageio.plugins.jpeg.JPEGImageReader
. This leads to a nice stack trace similar to:
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?
How can I process this type of JPEG using Java's ImageIO?
更新:我已经尝试过Commons-Sanselan,答案表明,但不幸的是它不支持JPEG文件:
Update: I've tried Commons-Sanselan, indicated by an answer, but unfortunately it does not support JPEG files:
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)
推荐答案
一种可能的解决方案是使用Java Advanced Imaging Image IO扩展。正确安装后,转换工作开箱即用。
One possible solution is to use the Java Advanced Imaging Image IO extensions. When properly installed, the conversion works out of the box.
问题是它与Maven不能很好地兼容,所以我问过将Java Advanced Imaging与Maven一起使用。如果这样,那么这个答案将被接受。
The problem is that it does not play well with Maven, so I've asked Using Java Advanced Imaging with Maven. If that works out, this answer will be accepted.
这篇关于使用ImageIO读取JCS_YCCK图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!