Author: damjan Date: Thu Oct 31 03:52:50 2013 New Revision: 1537372 URL: http://svn.apache.org/r1537372 Log: Eat our own dog food.
Modified: commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageMetadata.java Modified: commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageMetadata.java URL: http://svn.apache.org/viewvc/commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageMetadata.java?rev=1537372&r1=1537371&r2=1537372&view=diff ============================================================================== --- commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageMetadata.java (original) +++ commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageMetadata.java Thu Oct 31 03:52:50 2013 @@ -27,6 +27,7 @@ import javax.imageio.ImageIO; import org.apache.commons.imaging.ImageReadException; import org.apache.commons.imaging.Imaging; +import org.apache.commons.imaging.ImagingException; import org.apache.commons.imaging.common.IImageMetadata; import org.apache.commons.imaging.formats.tiff.JpegImageData; import org.apache.commons.imaging.formats.tiff.TiffField; @@ -150,10 +151,22 @@ public class JpegImageMetadata implement final JpegImageData jpegImageData = dir.getJpegImageData(); if (jpegImageData != null) { - final ByteArrayInputStream input = new ByteArrayInputStream( - jpegImageData.data); // JPEG thumbnail as JPEG or other format; try to parse. - image = ImageIO.read(input); + boolean imageSucceeded = false; + try { + image = Imaging.getBufferedImage(jpegImageData.data); + imageSucceeded = true; + } catch (final ImagingException imagingException) { + } catch (final IOException ioException) { + } finally { + // our JPEG reading is still a bit buggy - + // fall back to ImageIO on error + if (!imageSucceeded) { + final ByteArrayInputStream input = new ByteArrayInputStream( + jpegImageData.data); + image = ImageIO.read(input); + } + } if (image != null) { return image; }