Force reloading palette when using mmap in ImageFile.

This commit is contained in:
Marcus Brinkmann 2016-09-29 14:54:25 +02:00
parent 0a0fe292ec
commit c74e45e87c
3 changed files with 12 additions and 0 deletions

View File

@ -170,6 +170,9 @@ class ImageFile(Image.Image):
self.map, self.size, d, e, o, a self.map, self.size, d, e, o, a
) )
readonly = 1 readonly = 1
# After trashing self.im, we might need to reload the palette data.
if self.palette:
self.palette.dirty = 1
except (AttributeError, EnvironmentError, ImportError): except (AttributeError, EnvironmentError, ImportError):
self.map = None self.map = None

Binary file not shown.

View File

@ -63,5 +63,14 @@ class TestImageSequence(PillowTestCase):
self.assert_image_equal(frame, firstFrame) self.assert_image_equal(frame, firstFrame)
break break
def test_palette_mmap(self):
# Using mmap in ImageFile can require to reload the palette.
im = Image.open('Tests/images/multipage-mmap.tiff')
color1 = im.getpalette()[0:3]
im.seek(0)
color2 = im.getpalette()[0:3]
self.assertEqual(color1, color2)
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()