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