Better documented limited MPO save feature.

At present it’s only possible to save the current frame of an MPO, not
the MPO in its entirety. Added testing verifying as much.
This commit is contained in:
Eric W. Brown 2014-07-30 10:14:09 -04:00 committed by wiredfool
parent ab1bbb07c3
commit b46f5c6b1e
2 changed files with 17 additions and 3 deletions

View File

@ -25,7 +25,8 @@ from PIL import Image, JpegImagePlugin
def _accept(prefix):
return JpegImagePlugin._accept(prefix)
def _save(im, fp, filename):
def _save(im, fp, filename, **options):
# Note that we can only save the current frame at present
return JpegImagePlugin._save(im, fp, filename)
##

View File

@ -13,7 +13,8 @@ class TestFileMpo(PillowTestCase):
if "jpeg_encoder" not in codecs or "jpeg_decoder" not in codecs:
self.skipTest("jpeg support not available")
def roundtrip(self, im, **options):
def frame_roundtrip(self, im, **options):
# Note that for now, there is no MPO saving functionality
out = BytesIO()
im.save(out, "MPO", **options)
bytes = out.tell()
@ -106,7 +107,19 @@ class TestFileMpo(PillowTestCase):
im02 = im.tobytes()
self.assertEqual(im0, im02)
self.assertNotEqual(im0, im1)
def test_save(self):
# Note that only individual frames can be saved at present
for test_file in test_files:
im = Image.open(test_file)
self.assertEqual(im.tell(), 0)
jpg0 = self.frame_roundtrip(im)
self.assert_image_similar(im, jpg0, 30)
im.seek(1)
self.assertEqual(im.tell(), 1)
jpg1 = self.frame_roundtrip(im)
self.assert_image_similar(im, jpg1, 30)
if __name__ == '__main__':
unittest.main()