mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-07-04 20:03:20 +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
|
# Get and expand tag value
|
||||||
if size > 4:
|
if size > 4:
|
||||||
here = fp.tell()
|
here = fp.tell()
|
||||||
|
if Image.DEBUG:
|
||||||
|
print ("Tag Location: %s" %here)
|
||||||
fp.seek(i32(ifd, 8))
|
fp.seek(i32(ifd, 8))
|
||||||
|
if Image.DEBUG:
|
||||||
|
print ("Data Location: %s" %fp.tell())
|
||||||
data = ImageFile._safe_read(fp, size)
|
data = ImageFile._safe_read(fp, size)
|
||||||
fp.seek(here)
|
fp.seek(here)
|
||||||
else:
|
else:
|
||||||
|
@ -632,18 +636,20 @@ class TiffImageFile(ImageFile.ImageFile):
|
||||||
|
|
||||||
def seek(self, frame):
|
def seek(self, frame):
|
||||||
"Select a given frame as current image"
|
"Select a given frame as current image"
|
||||||
|
|
||||||
if frame < 0:
|
if frame < 0:
|
||||||
frame = 0
|
frame = 0
|
||||||
self._seek(frame)
|
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):
|
def tell(self):
|
||||||
"Return the current frame number"
|
"Return the current frame number"
|
||||||
|
|
||||||
return self._tell()
|
return self._tell()
|
||||||
|
|
||||||
def _seek(self, frame):
|
def _seek(self, frame):
|
||||||
|
|
||||||
self.fp = self.__fp
|
self.fp = self.__fp
|
||||||
if frame < self.__frame:
|
if frame < self.__frame:
|
||||||
# rewind file
|
# rewind file
|
||||||
|
@ -652,16 +658,18 @@ class TiffImageFile(ImageFile.ImageFile):
|
||||||
while self.__frame < frame:
|
while self.__frame < frame:
|
||||||
if not self.__next:
|
if not self.__next:
|
||||||
raise EOFError("no more images in TIFF file")
|
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)
|
self.fp.seek(self.__next)
|
||||||
|
if Image.DEBUG:
|
||||||
|
print("Loading tags, location: %s"%self.fp.tell())
|
||||||
self.tag.load(self.fp)
|
self.tag.load(self.fp)
|
||||||
self.__next = self.tag.next
|
self.__next = self.tag.next
|
||||||
self.__frame += 1
|
self.__frame += 1
|
||||||
self._setup()
|
self._setup()
|
||||||
#UNDONE - decompresion bomb
|
|
||||||
self.im = Image.core.new(self.mode, self.size)
|
|
||||||
|
|
||||||
def _tell(self):
|
def _tell(self):
|
||||||
|
|
||||||
return self.__frame
|
return self.__frame
|
||||||
|
|
||||||
def _decoder(self, rawmode, layer, tile=None):
|
def _decoder(self, rawmode, layer, tile=None):
|
||||||
|
|
|
@ -332,7 +332,7 @@ class TestFileLibTiff(LibTiffTestCase):
|
||||||
self.assertFalse(im.tag.next)
|
self.assertFalse(im.tag.next)
|
||||||
self.assertEqual(im.size, (20,20))
|
self.assertEqual(im.size, (20,20))
|
||||||
self.assertEqual(im.convert('RGB').getpixel((0,0)), (0,0,255))
|
self.assertEqual(im.convert('RGB').getpixel((0,0)), (0,0,255))
|
||||||
|
|
||||||
TiffImagePlugin.READ_LIBTIFF = False
|
TiffImagePlugin.READ_LIBTIFF = False
|
||||||
|
|
||||||
def test__next(self):
|
def test__next(self):
|
||||||
|
|
|
@ -22,15 +22,19 @@ class TestImageSequence(PillowTestCase):
|
||||||
|
|
||||||
self.assertEqual(index, 1)
|
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')
|
im = Image.open('Tests/images/multipage.tiff')
|
||||||
for index, frame in enumerate(ImageSequence.Iterator(im)):
|
for index, frame in enumerate(ImageSequence.Iterator(im)):
|
||||||
frame.load()
|
frame.load()
|
||||||
self.assertEqual(index, im.tell())
|
self.assertEqual(index, im.tell())
|
||||||
frame.convert('RGB')
|
frame.convert('RGB')
|
||||||
|
Image.DEBUG=False
|
||||||
|
|
||||||
def test_tiff(self):
|
def test_tiff(self):
|
||||||
return self._test_multipage_tiff()
|
#self._test_multipage_tiff(True)
|
||||||
|
self._test_multipage_tiff(False)
|
||||||
|
|
||||||
def test_libtiff(self):
|
def test_libtiff(self):
|
||||||
codecs = dir(Image.core)
|
codecs = dir(Image.core)
|
||||||
|
@ -39,7 +43,8 @@ class TestImageSequence(PillowTestCase):
|
||||||
self.skipTest("tiff support not available")
|
self.skipTest("tiff support not available")
|
||||||
|
|
||||||
TiffImagePlugin.READ_LIBTIFF = True
|
TiffImagePlugin.READ_LIBTIFF = True
|
||||||
self._test_multipage_tiff()
|
#self._test_multipage_tiff(True)
|
||||||
|
self._test_multipage_tiff(False)
|
||||||
TiffImagePlugin.READ_LIBTIFF = False
|
TiffImagePlugin.READ_LIBTIFF = False
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
Loading…
Reference in New Issue
Block a user