Problem using ImageIO.read

Marquinio picture Marquinio · Oct 29, 2010 · Viewed 12.2k times · Source

Ok I have an Image that I'm trying to read. Problem is that the Image.read(file) returns NULL.

File file = new File("C:\\images\\image1.jpg");
if(file.exists()){
    System.out.println("Image file exists.");
    BufferedImage originalImage = ImageIO.read(file);

}

So image exists but ImageIO.read(file) returns NULL. No thrown errors nothing!!! Whats going on?

This is what I have tried so far:

  1. Ok my environment is Windows 7. I tested with one of those images that comes with Windows and its able to read the image.
  2. The image1.jpg was created by another system. Now sure what method they are using.
  3. I tried converting the image into RGB as suggested here link text but it fails with "Not a JPEG file: starts with 0x4d 0x4d".
  4. The image extension is .jpg, but windows says its a JPEG type? This is confusing.

Can someone help with this? I'm new to this, not sure how to fix this.

Ok I just figured out that ImageIO.getImageReaders(stream) returns an empty Iterator. This means that it couldn't find a suitable reader? How am I supposed to read this image?

Answer

Marquinio picture Marquinio · Oct 29, 2010

Ok since I switched laptops, I looked at my old laptop and found this JAR jai-imageio.jar in the jre/ext/lib (I know bad idea). I moved it to my project/lib and it worked! I guess this jai-imageio.jar contains additional image readers.