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


Reply via email to