Skip to content

Commit 1defb1a

Browse files
authored
Merge pull request #3338 from radarhere/int_dpi
Convert int values of RATIONAL TIFF tags to floats
2 parents 41954f2 + 0a44d58 commit 1defb1a

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

Tests/test_file_libtiff.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,16 @@ def test_additional_metadata(self):
231231

232232
TiffImagePlugin.WRITE_LIBTIFF = False
233233

234+
def test_int_dpi(self):
235+
# issue #1765
236+
im = hopper('RGB')
237+
out = self.tempfile('temp.tif')
238+
TiffImagePlugin.WRITE_LIBTIFF = True
239+
im.save(out, dpi=(72, 72))
240+
TiffImagePlugin.WRITE_LIBTIFF = False
241+
reloaded = Image.open(out)
242+
self.assertEqual(reloaded.info['dpi'], (72.0, 72.0))
243+
234244
def test_g3_compression(self):
235245
i = Image.open('Tests/images/hopper_g4_500.tif')
236246
out = self.tempfile("temp.tif")

src/PIL/TiffImagePlugin.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -567,6 +567,9 @@ def _setitem(self, tag, value, legacy_api):
567567
if self.tagtype[tag] == 7 and py3:
568568
values = [value.encode("ascii", 'replace') if isinstance(
569569
value, str) else value]
570+
elif self.tagtype[tag] == 5:
571+
values = [float(v) if isinstance(v, int) else v
572+
for v in values]
570573

571574
values = tuple(info.cvt_enum(value) for value in values)
572575

0 commit comments

Comments
 (0)