Author: cmchen
Date: Sat Sep 12 16:23:54 2009
New Revision: 814186

URL: http://svn.apache.org/viewvc?rev=814186&view=rev
Log:
* Applied patch contributed by Nicolas Richeton, adding getEXIFThumbnailSize() 
and getEXIFThumbnailData() methods to JpegImageMetadata.

Modified:
    commons/proper/sanselan/trunk/RELEASE_NOTES
    
commons/proper/sanselan/trunk/src/main/java/org/apache/sanselan/formats/jpeg/JpegImageMetadata.java

Modified: commons/proper/sanselan/trunk/RELEASE_NOTES
URL: 
http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/RELEASE_NOTES?rev=814186&r1=814185&r2=814186&view=diff
==============================================================================
--- commons/proper/sanselan/trunk/RELEASE_NOTES (original)
+++ commons/proper/sanselan/trunk/RELEASE_NOTES Sat Sep 12 16:23:54 2009
@@ -20,6 +20,8 @@
    This appears to be a bug in how Microsoft Office writes gifs.
    The Image Descriptor has the correct value.
  * Added accessor methods for a number of ImageInfo properties.
+ * Applied patch contributed by Nicolas Richeton, adding 
getEXIFThumbnailSize() and getEXIFThumbnailData() 
+       methods to JpegImageMetadata.
 
 Release 0.97
 ------------

Modified: 
commons/proper/sanselan/trunk/src/main/java/org/apache/sanselan/formats/jpeg/JpegImageMetadata.java
URL: 
http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/main/java/org/apache/sanselan/formats/jpeg/JpegImageMetadata.java?rev=814186&r1=814185&r2=814186&view=diff
==============================================================================
--- 
commons/proper/sanselan/trunk/src/main/java/org/apache/sanselan/formats/jpeg/JpegImageMetadata.java
 (original)
+++ 
commons/proper/sanselan/trunk/src/main/java/org/apache/sanselan/formats/jpeg/JpegImageMetadata.java
 Sat Sep 12 16:23:54 2009
@@ -16,11 +16,13 @@
  */
 package org.apache.sanselan.formats.jpeg;
 
+import java.awt.Dimension;
 import java.awt.image.BufferedImage;
 import java.io.IOException;
 import java.util.ArrayList;
 
 import org.apache.sanselan.ImageReadException;
+import org.apache.sanselan.Sanselan;
 import org.apache.sanselan.common.IImageMetadata;
 import org.apache.sanselan.formats.tiff.TiffField;
 import org.apache.sanselan.formats.tiff.TiffImageData;
@@ -82,6 +84,48 @@
                return null;
        }
 
+       /**
+        * Returns the size of the first JPEG thumbnail found in the EXIF 
metadata.
+        * 
+        * @return Thumbnail width and height or null if no thumbnail.
+        * @throws ImageReadException
+        * @throws IOException
+        */
+       public Dimension getEXIFThumbnailSize() throws ImageReadException, 
IOException {
+               byte[] data = getEXIFThumbnailData();
+                       
+               if( data != null ){
+                       return Sanselan.getImageSize(data);
+               }
+           return null;
+       }       
+       
+       /**
+        * Returns the data of the first JPEG thumbnail found in the EXIF 
metadata.  
+        * 
+        * @return JPEG data or null if no thumbnail.
+        * @throws ImageReadException
+        * @throws IOException
+        */
+       public byte[] getEXIFThumbnailData() throws ImageReadException, 
IOException {
+               ArrayList dirs = exif.getDirectories();
+               for (int i = 0; i < dirs.size(); i++) {
+                       TiffImageMetadata.Directory dir = 
(TiffImageMetadata.Directory) dirs
+                                       .get(i);
+                       
+                       byte[] data = null;
+                       if( dir.getJpegImageData() != null ){
+                               data = dir.getJpegImageData().data;
+                       }
+                       // Support other image formats here.
+                       
+                       if( data != null ){
+                               return data;
+                       }
+               }
+               return null;
+       }
+
        public BufferedImage getEXIFThumbnail() throws ImageReadException,
                        IOException {
                ArrayList dirs = exif.getDirectories();


Reply via email to