使用ImageIO读取JCS_YCCK图像 [英] Reading JCS_YCCK images using ImageIO

查看:324
本文介绍了使用ImageIO读取JCS_YCCK图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆