diff --git a/PIL/JpegImagePlugin.py b/PIL/JpegImagePlugin.py index 7bd4b5335..5305fe6e5 100644 --- a/PIL/JpegImagePlugin.py +++ b/PIL/JpegImagePlugin.py @@ -432,9 +432,9 @@ def _getexif(self): except (KeyError, TypeError): pass else: - info = TiffImagePlugin.ImageFileDirectory_v2(head) + info = TiffImagePlugin.ImageFileDirectory_v1(head) info.load(file) - exif[0x8825] = dict(info) + exif[0x8825] = dict([(k,v[0]) if len(v) == 1 else (k,v) for k,v in info.items()]) return exif diff --git a/PIL/TiffTags.py b/PIL/TiffTags.py index d8e304d87..dc8960478 100644 --- a/PIL/TiffTags.py +++ b/PIL/TiffTags.py @@ -140,6 +140,7 @@ TAGS_V2 = { # FIXME add more tags here 34665: ("ExifIFD", SHORT, 1), 34675: ('ICCProfile', 7, 0), + 34853: ('GPSInfoIFD', 1, 1), # MPInfo 45056: ("MPFVersion", 7, 1), @@ -180,7 +181,6 @@ TAGS = {347: 'JPEGTables', 34377: 'PhotoshopInfo', 34850: 'ExposureProgram', 34852: 'SpectralSensitivity', - 34853: 'GPSInfoIFD', 34855: 'ISOSpeedRatings', 34856: 'OECF', 34864: 'SensitivityType', diff --git a/Tests/images/exif_gps.jpg b/Tests/images/exif_gps.jpg new file mode 100644 index 000000000..2b9ae9056 Binary files /dev/null and b/Tests/images/exif_gps.jpg differ diff --git a/Tests/test_file_jpeg.py b/Tests/test_file_jpeg.py index 367e57c14..1591c1e83 100644 --- a/Tests/test_file_jpeg.py +++ b/Tests/test_file_jpeg.py @@ -171,6 +171,23 @@ class TestFileJpeg(PillowTestCase): # Should not raise a TypeError im._getexif() + def test_exif_gps(self): + # Arrange + im = Image.open('Tests/images/exif_gps.jpg') + gps_index = 34853 + expected_exif_gps = { + 0: b'\x00\x00\x00\x01', + 2: (4294967295, 1), + 5: b'\x01', + 30: 65535, + 29: '1999:99:99 99:99:99'} + + # Act + exif = im._getexif() + + # Assert + self.assertEqual(exif[gps_index], expected_exif_gps) + def test_exif_gps_typeerror(self): im = Image.open('Tests/images/exif_gps_typeerror.jpg')