Java中图像编码的检测

Java中图像编码的检测,java,javax.imageio,Java,Javax.imageio,我正在接受用户输入的图像。我只允许使用JPEG图像。图像作为一个名为myInputStream的输入流到达。在下面的代码中,ImageIO.getImageReaders返回的迭代器始终为空 ImageInputStream imageInputStream = ImageIO.createImageInputStream( myInputStream); Iterator<ImageReader> iter = ImageIO.getImageReaders(imageIn

我正在接受用户输入的图像。我只允许使用JPEG图像。图像作为一个名为myInputStream的输入流到达。在下面的代码中,ImageIO.getImageReaders返回的迭代器始终为空

ImageInputStream imageInputStream = ImageIO.createImageInputStream(
    myInputStream);
Iterator<ImageReader> iter = ImageIO.getImageReaders(imageInputStream);
if (!iter.hasNext()) {
    // this always happens
}
ImageReader reader = (ImageReader) iter.next();
if (!reader.getFormatName().equals("jpeg")) {
    // haven't got this far yet
}

我还尝试将myInputStream直接传递给ImageIO.getImageReaders,结果相同。

空迭代器通常意味着ImageIO没有找到一个好的图像读取器来解码图像。这可能是因为您缺少了,或者您的映像具有。

编写操作系统和JDK版本。在我的ubuntu 10.04和OpenJDK 6上,ImageIO.getImageReaders返回com.sun.ImageIO.plugins.jpeg.JPEGImageReaderIt的Mac OS X 10.6和JDK 1.6的一个实例。Mac osx等OS Xseems附带的默认版本不支持高级java映像