mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-03-21 10:34:13 +03:00
Partial fix for test failures, works on py2.x
This commit is contained in:
parent
3df822d1ef
commit
d8b2829f4b
|
@ -448,7 +448,11 @@ class ImageFileDirectory(collections.MutableMapping):
|
|||
# Get and expand tag value
|
||||
if size > 4:
|
||||
here = fp.tell()
|
||||
if Image.DEBUG:
|
||||
print ("Tag Location: %s" %here)
|
||||
fp.seek(i32(ifd, 8))
|
||||
if Image.DEBUG:
|
||||
print ("Data Location: %s" %fp.tell())
|
||||
data = ImageFile._safe_read(fp, size)
|
||||
fp.seek(here)
|
||||
else:
|
||||
|
@ -632,18 +636,20 @@ class TiffImageFile(ImageFile.ImageFile):
|
|||
|
||||
def seek(self, frame):
|
||||
"Select a given frame as current image"
|
||||
|
||||
if frame < 0:
|
||||
frame = 0
|
||||
self._seek(frame)
|
||||
# Create a new core image object on second and
|
||||
# subsequent frames in the image. Image may be
|
||||
# different size/mode.
|
||||
Image._decompression_bomb_check(self.size)
|
||||
self.im = Image.core.new(self.mode, self.size)
|
||||
|
||||
def tell(self):
|
||||
"Return the current frame number"
|
||||
|
||||
return self._tell()
|
||||
|
||||
def _seek(self, frame):
|
||||
|
||||
self.fp = self.__fp
|
||||
if frame < self.__frame:
|
||||
# rewind file
|
||||
|
@ -652,16 +658,18 @@ class TiffImageFile(ImageFile.ImageFile):
|
|||
while self.__frame < frame:
|
||||
if not self.__next:
|
||||
raise EOFError("no more images in TIFF file")
|
||||
if Image.DEBUG:
|
||||
print("Seeking to frame %s, on frame %s, __next %s, location: %s"%
|
||||
(frame, self.__frame, self.__next, self.fp.tell()))
|
||||
self.fp.seek(self.__next)
|
||||
if Image.DEBUG:
|
||||
print("Loading tags, location: %s"%self.fp.tell())
|
||||
self.tag.load(self.fp)
|
||||
self.__next = self.tag.next
|
||||
self.__frame += 1
|
||||
self._setup()
|
||||
#UNDONE - decompresion bomb
|
||||
self.im = Image.core.new(self.mode, self.size)
|
||||
|
||||
def _tell(self):
|
||||
|
||||
return self.__frame
|
||||
|
||||
def _decoder(self, rawmode, layer, tile=None):
|
||||
|
|
|
@ -332,7 +332,7 @@ class TestFileLibTiff(LibTiffTestCase):
|
|||
self.assertFalse(im.tag.next)
|
||||
self.assertEqual(im.size, (20,20))
|
||||
self.assertEqual(im.convert('RGB').getpixel((0,0)), (0,0,255))
|
||||
|
||||
|
||||
TiffImagePlugin.READ_LIBTIFF = False
|
||||
|
||||
def test__next(self):
|
||||
|
|
|
@ -22,15 +22,19 @@ class TestImageSequence(PillowTestCase):
|
|||
|
||||
self.assertEqual(index, 1)
|
||||
|
||||
def _test_multipage_tiff(self):
|
||||
def _test_multipage_tiff(self, dbg=False):
|
||||
# debug had side effect of calling fp.tell.
|
||||
Image.DEBUG=dbg
|
||||
im = Image.open('Tests/images/multipage.tiff')
|
||||
for index, frame in enumerate(ImageSequence.Iterator(im)):
|
||||
frame.load()
|
||||
self.assertEqual(index, im.tell())
|
||||
frame.convert('RGB')
|
||||
Image.DEBUG=False
|
||||
|
||||
def test_tiff(self):
|
||||
return self._test_multipage_tiff()
|
||||
#self._test_multipage_tiff(True)
|
||||
self._test_multipage_tiff(False)
|
||||
|
||||
def test_libtiff(self):
|
||||
codecs = dir(Image.core)
|
||||
|
@ -39,7 +43,8 @@ class TestImageSequence(PillowTestCase):
|
|||
self.skipTest("tiff support not available")
|
||||
|
||||
TiffImagePlugin.READ_LIBTIFF = True
|
||||
self._test_multipage_tiff()
|
||||
#self._test_multipage_tiff(True)
|
||||
self._test_multipage_tiff(False)
|
||||
TiffImagePlugin.READ_LIBTIFF = False
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
Loading…
Reference in New Issue
Block a user