Merge pull request #976 from hugovk/tiff_ints

Fix saving TIFF with PageNumber total = 0
This commit is contained in:
wiredfool 2014-10-29 11:11:10 -07:00
commit 72c6db99df
3 changed files with 24 additions and 1 deletions

View File

@ -1153,8 +1153,11 @@ def _save(im, fp, filename):
# following tiffcp.c->cpTag->TIFF_RATIONAL
atts[k] = float(v[0][0])/float(v[0][1])
continue
if type(v) == tuple and len(v) > 2:
if (type(v) == tuple and
(len(v) > 2 or
(len(v) == 2 and v[1] == 0))):
# List of ints?
# Avoid divide by zero in next if-clause
if type(v[0]) in (int, float):
atts[k] = list(v)
continue

Binary file not shown.

View File

@ -299,6 +299,26 @@ class TestFileTiff(PillowTestCase):
self.assertEqual(ret, [0, 1])
def test_page_number_x_0(self):
# Issue 973
# Test TIFF with tag 297 (Page Number) having value of 0 0.
# The first number is the current page number.
# The second is the total number of pages, zero means not available.
# Arrange
outfile = self.tempfile("temp.tif")
# Created by printing a page in Chrome to PDF, then:
# /usr/bin/gs -q -sDEVICE=tiffg3 -sOutputFile=total-pages-zero.tif
# -dNOPAUSE /tmp/test.pdf -c quit
infile = "Tests/images/total-pages-zero.tif"
im = Image.open(infile)
# Act / Assert
# Should not divide by zero
im.save(outfile)
if __name__ == '__main__':
unittest.main()