2

I'm accepting an image as input from the user. I want to only allow a JPEG image. The image is arriving as an InputStream (called myInputStream below). In the code below, the Iterator returned by ImageIO.getImageReaders() is always empty.

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
}

I have also tried passing myInputStream directly to ImageIO.getImageReaders() with the same result.

alexantd
  • 3,543
  • 3
  • 27
  • 41

1 Answers1

5

An empty iterator usually means ImageIO hasn't found a good image reader for decoding your image. This may be because you'are missing the right decoder in your classpath, or you image has an unsupported color model.

Community
  • 1
  • 1
rodion
  • 14,729
  • 3
  • 53
  • 55