Use default DPI when exif provides invalid x_resolution

This commit is contained in:
Bei Pang 2019-10-17 10:02:15 -07:00 committed by Andrew Murray
parent 97ea6898ca
commit bcc766e02d
3 changed files with 9 additions and 1 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -634,6 +634,14 @@ class TestFileJpeg(PillowTestCase):
# OSError for unidentified image.
self.assertEqual(im.info.get("dpi"), (72, 72))
def test_invalid_exif_x_resolution(self):
# When no x or y resolution defined in EXIF
im = Image.open("Tests/images/invalid-exif-without-x-resolution.jpg")
# This should return the default, and not a ValueError or
# OSError for unidentified image.
self.assertEqual(im.info.get("dpi"), (72, 72))
def test_ifd_offset_exif(self):
# Arrange
# This image has been manually hexedited to have an IFD offset of 10,

View File

@ -172,7 +172,7 @@ def APP(self, marker):
# 1 dpcm = 2.54 dpi
dpi *= 2.54
self.info["dpi"] = int(dpi + 0.5), int(dpi + 0.5)
except (KeyError, SyntaxError, ZeroDivisionError):
except (KeyError, SyntaxError, ValueError, ZeroDivisionError):
# SyntaxError for invalid/unreadable EXIF
# KeyError for dpi not included
# ZeroDivisionError for invalid dpi rational value