diff --git a/Tests/images/a_fli.png b/Tests/images/a_fli.png new file mode 100644 index 000000000..93c3f1b12 Binary files /dev/null and b/Tests/images/a_fli.png differ diff --git a/Tests/test_file_fli.py b/Tests/test_file_fli.py index 142af3cec..2375d3749 100644 --- a/Tests/test_file_fli.py +++ b/Tests/test_file_fli.py @@ -85,6 +85,13 @@ class TestFileFli(PillowTestCase): layer_number = im.tell() self.assertEqual(layer_number, 1) + def test_seek(self): + im = Image.open(animated_test_file) + im.seek(50) + + expected = Image.open("Tests/images/a_fli.png") + self.assert_image_equal(im, expected) + if __name__ == '__main__': unittest.main() diff --git a/src/PIL/FliImagePlugin.py b/src/PIL/FliImagePlugin.py index c78c8c622..b1eb9ae4d 100644 --- a/src/PIL/FliImagePlugin.py +++ b/src/PIL/FliImagePlugin.py @@ -131,6 +131,9 @@ class FliImageFile(ImageFile.ImageFile): self.__frame = -1 self.__fp.seek(self.__rewind) self.__offset = 128 + else: + # ensure that the previous frame was loaded + self.load() if frame != self.__frame + 1: raise ValueError("cannot seek to frame %d" % frame)