From 4c5733de7c5a35aceaa9f99e15474f5e6606136f Mon Sep 17 00:00:00 2001 From: geka Date: Mon, 29 Feb 2016 13:59:24 +0300 Subject: [PATCH 1/2] fix bug in TiffImagePlugin. Save and restore pointer to super.load in _setup --- PIL/TiffImagePlugin.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/PIL/TiffImagePlugin.py b/PIL/TiffImagePlugin.py index 096be6f56..15e39a743 100644 --- a/PIL/TiffImagePlugin.py +++ b/PIL/TiffImagePlugin.py @@ -1066,6 +1066,13 @@ class TiffImageFile(ImageFile.ImageFile): if 0xBC01 in self.tag_v2: raise IOError("Windows Media Photo files not yet supported") + try: + #restore pointer to load method + self.load = self._load + except AttributeError: + #save pointer to parent load method + self._load = super(TiffImageFile,self).load + # extract relevant tags self._compression = COMPRESSION_INFO[self.tag_v2.get(COMPRESSION, 1)] self._planar_configuration = self.tag_v2.get(PLANAR_CONFIGURATION, 1) From 8502503652c59efbee63defbee80affecfa907ae Mon Sep 17 00:00:00 2001 From: Geka Date: Mon, 29 Feb 2016 15:07:51 +0300 Subject: [PATCH 2/2] Add test for multipage tiff file with different compression --- Tests/images/compression.tif | Bin 0 -> 646 bytes Tests/test_file_tiff.py | 16 ++++++++++++++++ 2 files changed, 16 insertions(+) create mode 100755 Tests/images/compression.tif diff --git a/Tests/images/compression.tif b/Tests/images/compression.tif new file mode 100755 index 0000000000000000000000000000000000000000..2488b7841c5461da9c661fc7c32abc8a37f71e5f GIT binary patch literal 646 zcmebD)MAifU|=u}k@YEk(0X8N!_kDN3|}71l3B#S$MBDVg@F+$%LK#>jLcv*7l?_( zW`eRo>X@Nyka{*K8^~l3WQ3T*0c49JsTYH?L1v0W)d&OGQjDx%yG{Yw(ops#AX^4W zuOTB7g9A|P77%v;El&Z`AUDA15KlKZpUfnMGDAHx1BIg0GKECLq$JBUQ*9#yLo;0i zBV8j)1w#`n6B8=~BRvI;WKD&j5CtOx12bKa0tQY7y`Y@xhU%OkJx;xthM6nZt(@5q z!x_}DWbc_vXZ9{>;LMr1_xiKf&#v#C$yvSf%(Jh*zCJs%lCxpmrPsgy|9X9C9kM8r zS|k$?=8_iHpm2nRHERPRtU>;Vg|!rrLny5Cfa+mkZ3c`qSXkQu+1SF`4HU6J01IOn IO=(yI0Na&zcK`qY literal 0 HcmV?d00001 diff --git a/Tests/test_file_tiff.py b/Tests/test_file_tiff.py index 20a0e93e3..0fc8a5bad 100644 --- a/Tests/test_file_tiff.py +++ b/Tests/test_file_tiff.py @@ -378,6 +378,22 @@ class TestFileTiff(PillowTestCase): self.assertEqual(im.tag_v2[X_RESOLUTION], 36) self.assertEqual(im.tag_v2[Y_RESOLUTION], 72) + def test_multipage_compression(self): + im = Image.open('Tests/images/compression.tif') + + im.seek(0) + self.assertEqual(im._compression,'tiff_ccitt') + self.assertEqual(im.size, (10, 10)) + + im.seek(1) + self.assertEqual(im._compression,'packbits') + self.assertEqual(im.size, (10, 10)) + im.load() + + im.seek(0) + self.assertEqual(im._compression,'tiff_ccitt') + self.assertEqual(im.size, (10, 10)) + im.load() if __name__ == '__main__': unittest.main()