相关疑难解决方法(0)

Java ImageIO IIOException:不支持的图像类型?

首次使用Java处理图像,并得到一些未记录得很好的奇怪异常.这是失败的代码行:

BufferedImage imgSelected = ImageIO.read(new File("/abs/url/to/file/image.jpg"));
Run Code Online (Sandbox Code Playgroud)

这一行抛出了一个IIOException,其中不支持的图像类型作为异常消息.我检查并重新检查它实际上是这行引发异常,File对象是有效的,URL是有效的,并且image.jpg实际上是一个有效的JPG,在其他图像查看器中加载完全正常.

我该怎么做才能获得有关此异常性质的更多信息?这是在Java 7中加载图像的传统方式,还是旧的/弃用方法?关于这些"不支持的图像类型"异常的信息并不是很多,当然,ImageIO支持JPG!

谢谢你的帮助!

java image exception javax.imageio

29
推荐指数
3
解决办法
4万
查看次数

是否有100%的Java替代ImageIO来读取JPEG文件?

我们正在使用Java2D调整上传到我们网站的照片的大小,但是我们遇到了一个问题(一个看似旧的问题,参见:http://forums.sun.com/thread.jspa?threadID = 5425569) - 一些特殊的JPEG CMMException当我们尝试ImageIO.read()包含其二进制数据的InputStream 时引发a :

java.awt.color.CMMException: Invalid image format
 at sun.awt.color.CMM.checkStatus(CMM.java:131)
 at sun.awt.color.ICC_Transform.<init>(ICC_Transform.java:89)
 at java.awt.image.ColorConvertOp.filter(ColorConvertOp.java:516)
 at com.sun.imageio.plugins.jpeg.JPEGImageReader.acceptPixels(JPEGImageReader.java:1114)
 at com.sun.imageio.plugins.jpeg.JPEGImageReader.readImage(Native Method)
 at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:1082)
 at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:897)
 at javax.imageio.ImageIO.read(ImageIO.java:1422)
 at javax.imageio.ImageIO.read(ImageIO.java:1326)
    ...
Run Code Online (Sandbox Code Playgroud)

(剪断了堆栈跟踪的剩余部分,这是我们的ImageIO.read()调用,servlet代码等)

我们将其缩小到特定相机拍摄的照片,然后我选择了一张触发此错误的照片:http://img214.imageshack.us/img214/5121/estacaosp.jpg.我们注意到这只发生在Sun的JVM上(在Linux和Mac上,只是在1.6.0_20上进行了测试) - 一台带有OpenJDK的测试机器可以顺利读取相同的照片,这可能是由于JPEG阅读器的不同实现.

不幸的是,我们无法在生产中切换JVM,也无法使用ImageMagick(http://www.imagemagick.org/)等本机相关解决方案.

考虑到这一点,我的问题是:是否存在可以处理链接照片之类的照片的ImageIO JPEG读取器的替代品?如果没有,我们可以使用另一个100%纯Java照片大小调整解决方案吗?

谢谢!

java jpeg java-2d resize-image javax.imageio

20
推荐指数
3
解决办法
2万
查看次数

标签 统计

java ×2

javax.imageio ×2

exception ×1

image ×1

java-2d ×1

jpeg ×1

resize-image ×1