]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/drew/jpeg/ExifReader.java
Version 9, February 2010
[GpsPrune.git] / tim / prune / drew / jpeg / ExifReader.java
index 9e0fd5980fd0f33fa64a61a46b0db6fc345c53b4..0084b87b169a6b0913f386e677c34e15aaeb757f 100644 (file)
@@ -78,6 +78,8 @@ public class ExifReader
        private static final int TAG_THUMBNAIL_OFFSET = 0x0201;\r
        /** Thumbnail length */\r
        private static final int TAG_THUMBNAIL_LENGTH = 0x0202;\r
+       /** Orientation of image */\r
+       private static final int TAG_ORIENTATION = 0x0112;\r
 \r
 \r
        /**\r
@@ -383,6 +385,11 @@ public class ExifReader
                        _thumbnailLength = get16Bits(inTagValueOffset);\r
                        extractThumbnail(inMetadata);\r
                }\r
+               else if (inTagType == TAG_ORIENTATION) {\r
+                       if (inMetadata.getOrientationCode() < 1) {\r
+                               inMetadata.setOrientationCode(get16Bits(inTagValueOffset));\r
+                       }\r
+               }\r
        }\r
 \r
        /**\r
@@ -411,7 +418,7 @@ public class ExifReader
                if (inByteCount > 4)\r
                {\r
                        // If it's bigger than 4 bytes, the dir entry contains an offset.\r
-                       // dirEntryOffset must be passed, as some makernote implementations (e.g. FujiFilm) incorrectly use an\r
+                       // dirEntryOffset must be passed, as some makers (e.g. FujiFilm) incorrectly use an\r
                        // offset relative to the start of the makernote itself, not the TIFF segment.\r
                        final int offsetVal = get32Bits(inDirEntryOffset + 8);\r
                        if (offsetVal + inByteCount > _data.length)\r
@@ -506,7 +513,8 @@ public class ExifReader
        private int get16Bits(int offset)\r
        {\r
                if (offset<0 || offset+2>_data.length)\r
-                       throw new ArrayIndexOutOfBoundsException("attempt to read data outside of exif segment (index " + offset + " where max index is " + (_data.length - 1) + ")");\r
+                       throw new ArrayIndexOutOfBoundsException("attempt to read data outside of exif segment (index "\r
+                               + offset + " where max index is " + (_data.length - 1) + ")");\r
 \r
                if (_isMotorolaByteOrder) {\r
                        // Motorola - MSB first\r