You are viewing a plain text version of this content. The canonical link for it is here.
Posted to photark-commits@incubator.apache.org by lr...@apache.org on 2010/02/21 00:44:16 UTC

svn commit: r912267 - /incubator/photark/trunk/photark/src/main/java/org/apache/photark/util/ImageMetadataScanner.java

Author: lresende
Date: Sun Feb 21 00:44:16 2010
New Revision: 912267

URL: http://svn.apache.org/viewvc?rev=912267&view=rev
Log:
PHOTARK-17 - Cleaning up Image Metadata scanner implementation and removing unused imports

Modified:
    incubator/photark/trunk/photark/src/main/java/org/apache/photark/util/ImageMetadataScanner.java

Modified: incubator/photark/trunk/photark/src/main/java/org/apache/photark/util/ImageMetadataScanner.java
URL: http://svn.apache.org/viewvc/incubator/photark/trunk/photark/src/main/java/org/apache/photark/util/ImageMetadataScanner.java?rev=912267&r1=912266&r2=912267&view=diff
==============================================================================
--- incubator/photark/trunk/photark/src/main/java/org/apache/photark/util/ImageMetadataScanner.java (original)
+++ incubator/photark/trunk/photark/src/main/java/org/apache/photark/util/ImageMetadataScanner.java Sun Feb 21 00:44:16 2010
@@ -23,7 +23,6 @@
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Properties;
 
 import org.apache.photark.ImageMetadata;
 import org.apache.sanselan.ImageReadException;
@@ -40,125 +39,42 @@
     public static List<ImageMetadata> scanImageMetadata(String fileName, InputStream imageStream) {
         List<ImageMetadata> imageAttributes = new ArrayList<ImageMetadata>();
         try {
-            
+
             // get all metadata stored in EXIF format (ie. from JPEG or TIFF). 
             IImageMetadata metadata = Sanselan.getMetadata(imageStream, fileName);
             if (metadata instanceof JpegImageMetadata) {
-                    JpegImageMetadata jpegMetadata = (JpegImageMetadata) metadata;
-
-                    // Jpeg EXIF metadata is stored in a TIFF-based directory structure
-                    // and is identified with TIFF tags.
-                    // Here we look for the "x resolution" tag, but
-                    // we could just as easily search for any other tag.
-                    // see the TiffConstants file for a list of TIFF tags.
-
-                    // populate various interesting EXIF tags.
-                    populateImageMetadata(imageAttributes, jpegMetadata, TiffConstants.TIFF_TAG_XRESOLUTION);
-                    populateImageMetadata(imageAttributes, jpegMetadata, TiffConstants.TIFF_TAG_YRESOLUTION);
-                    populateImageMetadata(imageAttributes, jpegMetadata, TiffConstants.TIFF_TAG_DATE_TIME);
-                    populateImageMetadata(imageAttributes, jpegMetadata, TiffConstants.EXIF_TAG_DATE_TIME_ORIGINAL);
-                    populateImageMetadata(imageAttributes, jpegMetadata, TiffConstants.EXIF_TAG_CREATE_DATE);
-                    populateImageMetadata(imageAttributes, jpegMetadata, TiffConstants.EXIF_TAG_ISO);
-                    populateImageMetadata(imageAttributes, jpegMetadata, TiffConstants.EXIF_TAG_SHUTTER_SPEED_VALUE);
-                    populateImageMetadata(imageAttributes, jpegMetadata, TiffConstants.EXIF_TAG_APERTURE_VALUE);
-                    populateImageMetadata(imageAttributes, jpegMetadata, TiffConstants.EXIF_TAG_BRIGHTNESS_VALUE);
-                    populateImageMetadata(imageAttributes, jpegMetadata, TiffConstants.GPS_TAG_GPS_LATITUDE_REF);
-                    populateImageMetadata(imageAttributes, jpegMetadata, TiffConstants.GPS_TAG_GPS_LATITUDE);
-                    populateImageMetadata(imageAttributes, jpegMetadata, TiffConstants.GPS_TAG_GPS_LONGITUDE_REF);
-                    populateImageMetadata(imageAttributes, jpegMetadata, TiffConstants.GPS_TAG_GPS_LONGITUDE);
-
-                    /*
-                    // simple interface to GPS data
-                    TiffImageMetadata exifMetadata = jpegMetadata.getExif();
-                    if (null != exifMetadata)
-                    {
-                        TiffImageMetadata.GPSInfo gpsInfo = exifMetadata.getGPS();
-                        if (null != gpsInfo)
-                        {
-                            String gpsDescription = gpsInfo.toString();
-                            double longitude = gpsInfo.getLongitudeAsDegreesEast();
-                            double latitude = gpsInfo.getLatitudeAsDegreesNorth();
-
-                            System.out.println("    " + "GPS Description: " + gpsDescription);
-                            System.out.println("    " + "GPS Longitude (Degrees East): " + longitude);
-                            System.out.println("    " + "GPS Latitude (Degrees North): " + latitude);
-                        }
-                    }
-
-                    // more specific example of how to manually access GPS values
-                    TiffField gpsLatitudeRefField = jpegMetadata
-                                    .findEXIFValueWithExactMatch(TiffConstants.GPS_TAG_GPS_LATITUDE_REF);
-                    TiffField gpsLatitudeField = jpegMetadata
-                                    .findEXIFValueWithExactMatch(TiffConstants.GPS_TAG_GPS_LATITUDE);
-                    TiffField gpsLongitudeRefField = jpegMetadata
-                                    .findEXIFValueWithExactMatch(TiffConstants.GPS_TAG_GPS_LONGITUDE_REF);
-                    TiffField gpsLongitudeField = jpegMetadata
-                                    .findEXIFValueWithExactMatch(TiffConstants.GPS_TAG_GPS_LONGITUDE);
-                    if (gpsLatitudeRefField != null && gpsLatitudeField != null
-                                    && gpsLongitudeRefField != null
-                                    && gpsLongitudeField != null)
-                    {
-                            // all of these values are strings.
-                            String gpsLatitudeRef = (String) gpsLatitudeRefField.getValue();
-                            RationalNumber gpsLatitude[] = (RationalNumber[]) (gpsLatitudeField
-                                            .getValue());
-                            String gpsLongitudeRef = (String) gpsLongitudeRefField
-                                            .getValue();
-                            RationalNumber gpsLongitude[] = (RationalNumber[]) gpsLongitudeField
-                                            .getValue();
-
-                            RationalNumber gpsLatitudeDegrees = gpsLatitude[0];
-                            RationalNumber gpsLatitudeMinutes = gpsLatitude[1];
-                            RationalNumber gpsLatitudeSeconds = gpsLatitude[2];
-
-                            RationalNumber gpsLongitudeDegrees = gpsLongitude[0];
-                            RationalNumber gpsLongitudeMinutes = gpsLongitude[1];
-                            RationalNumber gpsLongitudeSeconds = gpsLongitude[2];
-
-                            // This will format the gps info like so:
-                            //
-                            // gpsLatitude: 8 degrees, 40 minutes, 42.2 seconds S
-                            // gpsLongitude: 115 degrees, 26 minutes, 21.8 seconds E
-
-                            System.out.println("    " + "GPS Latitude: "
-                                            + gpsLatitudeDegrees.toDisplayString() + " degrees, "
-                                            + gpsLatitudeMinutes.toDisplayString() + " minutes, "
-                                            + gpsLatitudeSeconds.toDisplayString() + " seconds "
-                                            + gpsLatitudeRef);
-                            System.out.println("    " + "GPS Longitude: "
-                                            + gpsLongitudeDegrees.toDisplayString() + " degrees, "
-                                            + gpsLongitudeMinutes.toDisplayString() + " minutes, "
-                                            + gpsLongitudeSeconds.toDisplayString() + " seconds "
-                                            + gpsLongitudeRef);
+                JpegImageMetadata jpegMetadata = (JpegImageMetadata) metadata;
 
+                // Jpeg EXIF metadata is stored in a TIFF-based directory structure
+                // and is identified with TIFF tags.
+                // Here we look for the "x resolution" tag, but
+                // we could just as easily search for any other tag.
+                // see the TiffConstants file for a list of TIFF tags.
+
+                // populate various interesting EXIF tags.
+                populateImageMetadata(imageAttributes, jpegMetadata, TiffConstants.TIFF_TAG_XRESOLUTION);
+                populateImageMetadata(imageAttributes, jpegMetadata, TiffConstants.TIFF_TAG_YRESOLUTION);
+                populateImageMetadata(imageAttributes, jpegMetadata, TiffConstants.TIFF_TAG_DATE_TIME);
+                populateImageMetadata(imageAttributes, jpegMetadata, TiffConstants.EXIF_TAG_DATE_TIME_ORIGINAL);
+                populateImageMetadata(imageAttributes, jpegMetadata, TiffConstants.EXIF_TAG_CREATE_DATE);
+                populateImageMetadata(imageAttributes, jpegMetadata, TiffConstants.EXIF_TAG_ISO);
+                populateImageMetadata(imageAttributes, jpegMetadata, TiffConstants.EXIF_TAG_SHUTTER_SPEED_VALUE);
+                populateImageMetadata(imageAttributes, jpegMetadata, TiffConstants.EXIF_TAG_APERTURE_VALUE);
+                populateImageMetadata(imageAttributes, jpegMetadata, TiffConstants.EXIF_TAG_BRIGHTNESS_VALUE);
+                populateImageMetadata(imageAttributes, jpegMetadata, TiffConstants.GPS_TAG_GPS_LATITUDE_REF);
+                populateImageMetadata(imageAttributes, jpegMetadata, TiffConstants.GPS_TAG_GPS_LATITUDE);
+                populateImageMetadata(imageAttributes, jpegMetadata, TiffConstants.GPS_TAG_GPS_LONGITUDE_REF);
+                populateImageMetadata(imageAttributes, jpegMetadata, TiffConstants.GPS_TAG_GPS_LONGITUDE);
+
+                ArrayList<?> items = jpegMetadata.getItems();
+                for (int i = 0; i < items.size(); i++) {
+                    Object item = items.get(i);
+                    if (item instanceof TiffImageMetadata.Item) {
+                        TiffImageMetadata.Item tiffItem = (TiffImageMetadata.Item)item;
+                        imageAttributes.add(new ImageMetadata(tiffItem.getKeyword(), tiffItem.getText()));
                     }
-                    
-
-                    System.out.println();
-                    */
-                    ArrayList items = jpegMetadata.getItems();
-                    for (int i = 0; i < items.size(); i++)
-                    {
-
-                        Object item = items.get(i);
-                        if( item instanceof TiffImageMetadata.Item) {
-                            TiffImageMetadata.Item tiffItem = (TiffImageMetadata.Item) item;
-                            imageAttributes.add(new ImageMetadata(tiffItem.getKeyword(), tiffItem.getText()));
-                        }
-                        //System.out.println("    " + "item: " + item);
-                        //IImageMetadataItem item = (IImageMetadataItem) items.get(i);
-                        //imageAttributes.add(new ImageMetadata(item.))
-                    }                    
+                }               
             }
-
-            //===========
-            
-            /*
-            List<IImageMetadataItem> metadataItems = metadata.getItems();
-            for(IImageMetadataItem metadataItem : metadataItems) {
-                System.out.println(">>" + metadataItem);
-            }
-            */
         } catch (ImageReadException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
@@ -169,15 +85,6 @@
         return imageAttributes;
     }
 
-    private static void printTagValue(JpegImageMetadata jpegMetadata, TagInfo tagInfo) throws ImageReadException, IOException {
-        TiffField field = jpegMetadata.findEXIFValue(tagInfo);
-        if (field == null)
-            System.out.println(tagInfo.name + ": " + "Not Found.");
-        else
-            System.out.println(tagInfo.name + ": "
-                               + field.getValueDescription());
-    }
-    
     /**
      * Check if an eFix attribute is available and ad that to the metadata attribute list
      * @param metadataAttributes
@@ -192,7 +99,7 @@
             metadataAttributes.add(metadata);
         }
     }
-    
+
     /**
      * Return Efix information wrapped into a ImageMetadata
      * @param jpegMetadata Collection of the efix metadatas
@@ -207,7 +114,7 @@
         if (field != null) {
             imageMetadata = new ImageMetadata(tagInfo.name, field.getValueDescription());
         }
-        
+
         return imageMetadata;
     }