X-Git-Url: https://gitweb.fperrin.net/?p=GpsPrune.git;a=blobdiff_plain;f=tim%2Fprune%2Fjpeg%2Fdrew%2FExifReader.java;fp=tim%2Fprune%2Fdrew%2Fjpeg%2FExifReader.java;h=50a72d0caffd37c987f9897b9ec2ff2860a83994;hp=0084b87b169a6b0913f386e677c34e15aaeb757f;hb=c0387c124840c9407e040600fda88f3c3e8f6aa6;hpb=1ee49ae3c8ef3aa2e63eadd458531e5f8bd4f92c diff --git a/tim/prune/drew/jpeg/ExifReader.java b/tim/prune/jpeg/drew/ExifReader.java similarity index 92% rename from tim/prune/drew/jpeg/ExifReader.java rename to tim/prune/jpeg/drew/ExifReader.java index 0084b87..50a72d0 100644 --- a/tim/prune/drew/jpeg/ExifReader.java +++ b/tim/prune/jpeg/drew/ExifReader.java @@ -1,8 +1,10 @@ -package tim.prune.drew.jpeg; +package tim.prune.jpeg.drew; import java.io.File; import java.util.HashMap; +import tim.prune.jpeg.JpegData; + /** * Extracts Exif data from a JPEG header segment * Based on Drew Noakes' Metadata extractor at http://drewnoakes.com @@ -336,25 +338,29 @@ public class ExifReader inMetadata.setLatitudeRef(readString(inTagValueOffset, inFormatCode, inComponentCount)); break; case TAG_GPS_LATITUDE: - inMetadata.setLatitude(readRationalArray(inTagValueOffset, inFormatCode, inComponentCount)); + Rational[] latitudes = readRationalArray(inTagValueOffset, inFormatCode, inComponentCount); + inMetadata.setLatitude(new double[] {latitudes[0].doubleValue(), latitudes[1].doubleValue(), latitudes[2].doubleValue()}); break; case TAG_GPS_LONGITUDE_REF: inMetadata.setLongitudeRef(readString(inTagValueOffset, inFormatCode, inComponentCount)); break; case TAG_GPS_LONGITUDE: - inMetadata.setLongitude(readRationalArray(inTagValueOffset, inFormatCode, inComponentCount)); + Rational[] longitudes = readRationalArray(inTagValueOffset, inFormatCode, inComponentCount); + inMetadata.setLongitude(new double[] {longitudes[0].doubleValue(), longitudes[1].doubleValue(), longitudes[2].doubleValue()}); break; case TAG_GPS_ALTITUDE_REF: inMetadata.setAltitudeRef(_data[inTagValueOffset]); break; case TAG_GPS_ALTITUDE: - inMetadata.setAltitude(readRational(inTagValueOffset, inFormatCode, inComponentCount)); + inMetadata.setAltitude(readRational(inTagValueOffset, inFormatCode, inComponentCount).intValue()); break; case TAG_GPS_TIMESTAMP: - inMetadata.setGpsTimestamp(readRationalArray(inTagValueOffset, inFormatCode, inComponentCount)); + Rational[] times = readRationalArray(inTagValueOffset, inFormatCode, inComponentCount); + inMetadata.setGpsTimestamp(new int[] {times[0].intValue(), times[1].intValue(), times[2].intValue()}); break; case TAG_GPS_DATESTAMP: - inMetadata.setGpsDatestamp(readRationalArray(inTagValueOffset, inFormatCode, inComponentCount)); + Rational[] dates = readRationalArray(inTagValueOffset, inFormatCode, inComponentCount); + inMetadata.setGpsDatestamp(new int[] {dates[0].intValue(), dates[1].intValue(), dates[2].intValue()}); break; default: // ignore all other tags }