From cb7d9bcd1213cae7fbb659402a0c87ebb91d204b Mon Sep 17 00:00:00 2001 From: David Nisson Date: Tue, 16 Apr 2019 21:20:29 -0700 Subject: [PATCH 1/4] updated TIFF tile descriptors to match current decoding functionality --- src/PIL/TiffImagePlugin.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/PIL/TiffImagePlugin.py b/src/PIL/TiffImagePlugin.py index 7596aae65..91da55882 100644 --- a/src/PIL/TiffImagePlugin.py +++ b/src/PIL/TiffImagePlugin.py @@ -1328,8 +1328,8 @@ class TiffImageFile(ImageFile.ImageFile): # Offset in the tile tuple is 0, we go from 0,0 to # w,h, and we only do this once -- eds - a = (rawmode, self._compression, False) - self.tile.append((self._compression, (0, 0, xsize, ysize), 0, a)) + a = (rawmode, self._compression, False, self.tag_v2.offset) + self.tile.append(("libtiff", (0, 0, xsize, ysize), 0, a)) elif STRIPOFFSETS in self.tag_v2 or TILEOFFSETS in self.tag_v2: # striped image @@ -1356,10 +1356,10 @@ class TiffImageFile(ImageFile.ImageFile): # adjust stride width accordingly stride /= bps_count - a = (tile_rawmode, int(stride), 1) + a = (tile_rawmode, int(stride), 1, offset.offset) self.tile.append( ( - self._compression, + "libtiff", (x, y, min(x + w, xsize), min(y + h, ysize)), offset, a, From 5857bf8243cbd64d1ee779cfee408f9f46121dd9 Mon Sep 17 00:00:00 2001 From: David Nisson Date: Tue, 16 Apr 2019 22:01:21 -0700 Subject: [PATCH 2/4] corrected args to reflect change to tile descriptors --- src/PIL/TiffImagePlugin.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/PIL/TiffImagePlugin.py b/src/PIL/TiffImagePlugin.py index 91da55882..835c460a5 100644 --- a/src/PIL/TiffImagePlugin.py +++ b/src/PIL/TiffImagePlugin.py @@ -1121,7 +1121,7 @@ class TiffImageFile(ImageFile.ImageFile): # (self._compression, (extents tuple), # 0, (rawmode, self._compression, fp)) extents = self.tile[0][1] - args = list(self.tile[0][3]) + [self.tag_v2.offset] + args = list(self.tile[0][3]) # To be nice on memory footprint, if there's a # file descriptor, use that instead of reading @@ -1356,10 +1356,10 @@ class TiffImageFile(ImageFile.ImageFile): # adjust stride width accordingly stride /= bps_count - a = (tile_rawmode, int(stride), 1, offset.offset) + a = (tile_rawmode, int(stride), 1) self.tile.append( ( - "libtiff", + self._compression, (x, y, min(x + w, xsize), min(y + h, ysize)), offset, a, From ddb61cfbd2c39f7a1877dd37403aea0836693a6c Mon Sep 17 00:00:00 2001 From: David Nisson Date: Tue, 16 Apr 2019 22:42:21 -0700 Subject: [PATCH 3/4] updated tests to match new tile descriptors --- Tests/test_file_libtiff.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Tests/test_file_libtiff.py b/Tests/test_file_libtiff.py index dedcc179a..5bbceddbf 100644 --- a/Tests/test_file_libtiff.py +++ b/Tests/test_file_libtiff.py @@ -121,7 +121,7 @@ class TestFileLibTiff(LibTiffTestCase): self.assertEqual(im.mode, "RGB") self.assertEqual(im.size, (278, 374)) - self.assertEqual(im.tile[0][:3], ("tiff_adobe_deflate", (0, 0, 278, 374), 0)) + self.assertEqual(im.tile[0][:3], ("libtiff", (0, 0, 278, 374), 0)) im.load() self.assert_image_equal_tofile(im, "Tests/images/tiff_adobe_deflate.png") @@ -661,7 +661,8 @@ class TestFileLibTiff(LibTiffTestCase): self.assertEqual(im.mode, "RGBA") self.assertEqual(im.size, (100, 40)) self.assertEqual( - im.tile, [("tiff_lzw", (0, 0, 100, 40), 0, ("RGBa;16N", "tiff_lzw", False))] + im.tile, + [("libtiff", (0, 0, 100, 40), 0, ("RGBa;16N", "tiff_lzw", False, 38236))], ) im.load() @@ -680,7 +681,7 @@ class TestFileLibTiff(LibTiffTestCase): self.assertEqual(im.mode, "RGB") self.assertEqual(im.size, (256, 256)) self.assertEqual( - im.tile, [("jpeg", (0, 0, 256, 256), 0, ("RGB", "jpeg", False))] + im.tile, [("libtiff", (0, 0, 256, 256), 0, ("RGB", "jpeg", False, 5122))] ) im.load() From d00e18b0179142a1b3542deccd9fc6c60c472821 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Sun, 23 Jun 2019 14:01:51 +1000 Subject: [PATCH 4/4] Updated test result --- Tests/test_file_libtiff.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Tests/test_file_libtiff.py b/Tests/test_file_libtiff.py index 5bbceddbf..79955a5af 100644 --- a/Tests/test_file_libtiff.py +++ b/Tests/test_file_libtiff.py @@ -644,10 +644,10 @@ class TestFileLibTiff(LibTiffTestCase): im.tile, [ ( - "tiff_adobe_deflate", + "libtiff", (0, 0, 100, 40), 0, - ("RGB;16N", "tiff_adobe_deflate", False), + ("RGB;16N", "tiff_adobe_deflate", False, 8), ) ], )