You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by da...@apache.org on 2013/10/31 04:52:50 UTC

svn commit: r1537372 - /commons/proper/imaging/trunk/src/main/java/org/apache/commons/imaging/formats/jpeg/JpegImageMetadata.java

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;
                 }