Working with images in Java for the first time and am getting some bizarro exceptions that aren't documented very well. Here's the line of code that is failing:
BufferedImage imgSelected = ImageIO.read(new File("/abs/url/to/file/image.jpg"));
This line is throwing an IIOException with Unsupported image type as the exception message. I have checked and re-checked that it is in fact this line throwing the exception, that the File object is valid, that the URL is valid, and that the image.jpg
is in fact a valid JPG that loads perfectly fine in other image viewers.
What could I do to get more information about the nature of this exception? Is this the traditional way for loading images in Java 7, or is this an old/deprecating method? There's just not a lot of info out there about these "Unsupported image type" exceptions, and surely, ImageIO supported JPGs!
Thanks for any help!
Try to check the encoding of the JPEG. ImageIO
can't read CMYK-encoded jpeg images for example.
AFAIK, ImageIO hasn't been updated for years, so you'd like to try and use the official alternative/extension: JAI ImageIO.
Unforutnately, JAI ImageIO needs some native libraries installed into the JRE, which might be unwanted. We do the following:
JPEGCodec
: JPEGCodec.createJPEGDecoder(...)
BufferedImage
and manually convert it (you could use ICC profiles, but the manual conversion fits our needs)Here's a question of mine that resulted of the fact that ImageIO
doesn't support all types of JPEG images, and I there stated a little more of my findings of why you get that message: Pure Java alternative to JAI ImageIO for detecting CMYK images