Skip to content

Commit 23f848e

Browse files
authored
Merge pull request #5443 from radarhere/fp
2 parents c3ee625 + fd299e3 commit 23f848e

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

Tests/test_file_libtiff.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -578,6 +578,17 @@ def test_multipage_nframes(self):
578578

579579
TiffImagePlugin.READ_LIBTIFF = False
580580

581+
def test_multipage_seek_backwards(self):
582+
TiffImagePlugin.READ_LIBTIFF = True
583+
with Image.open("Tests/images/multipage.tiff") as im:
584+
im.seek(1)
585+
im.load()
586+
587+
im.seek(0)
588+
assert im.convert("RGB").getpixel((0, 0)) == (0, 128, 0)
589+
590+
TiffImagePlugin.READ_LIBTIFF = False
591+
581592
def test__next(self):
582593
TiffImagePlugin.READ_LIBTIFF = True
583594
with Image.open("Tests/images/hopper.tif") as im:

src/PIL/TiffImagePlugin.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1053,16 +1053,18 @@ def seek(self, frame):
10531053

10541054
def _seek(self, frame):
10551055
self.fp = self.__fp
1056+
1057+
# reset buffered io handle in case fp
1058+
# was passed to libtiff, invalidating the buffer
1059+
self.fp.tell()
1060+
10561061
while len(self._frame_pos) <= frame:
10571062
if not self.__next:
10581063
raise EOFError("no more images in TIFF file")
10591064
logger.debug(
10601065
f"Seeking to frame {frame}, on frame {self.__frame}, "
10611066
f"__next {self.__next}, location: {self.fp.tell()}"
10621067
)
1063-
# reset buffered io handle in case fp
1064-
# was passed to libtiff, invalidating the buffer
1065-
self.fp.tell()
10661068
self.fp.seek(self.__next)
10671069
self._frame_pos.append(self.__next)
10681070
logger.debug("Loading tags, location: %s" % self.fp.tell())

0 commit comments

Comments
 (0)