diff --git a/PIL/JpegImagePlugin.py b/PIL/JpegImagePlugin.py index 815ee02b6..63fd0dcbf 100644 --- a/PIL/JpegImagePlugin.py +++ b/PIL/JpegImagePlugin.py @@ -682,13 +682,16 @@ def _save(im, fp, filename): o8(len(markers)) + marker) i += 1 + # "progressive" is the official name, but older documentation + # says "progression" + # FIXME: issue a warning if the wrong form is used (post-1.1.7) + progressive = info.get("progressive", False) or\ + info.get("progression", False) + # get keyword arguments im.encoderconfig = ( quality, - # "progressive" is the official name, but older documentation - # says "progression" - # FIXME: issue a warning if the wrong form is used (post-1.1.7) - "progressive" in info or "progression" in info, + progressive, info.get("smooth", 0), "optimize" in info, info.get("streamtype", 0), @@ -704,7 +707,7 @@ def _save(im, fp, filename): # channels*size, this is a value that's been used in a django patch. # https://github.com/matthewwithanm/django-imagekit/issues/50 bufsize = 0 - if "optimize" in info or "progressive" in info or "progression" in info: + if "optimize" in info or progressive: # keep sets quality to 0, but the actual value may be high. if quality >= 95 or quality == 0: bufsize = 2 * im.size[0] * im.size[1] diff --git a/Tests/test_file_jpeg.py b/Tests/test_file_jpeg.py index 5e66cc765..0ae82fac2 100644 --- a/Tests/test_file_jpeg.py +++ b/Tests/test_file_jpeg.py @@ -227,12 +227,20 @@ class TestFileJpeg(PillowTestCase): def test_progressive_compat(self): im1 = self.roundtrip(hopper()) + self.assertFalse(im1.info.get("progressive")) + self.assertFalse(im1.info.get("progression")) + + im2 = self.roundtrip(hopper(), progressive=0) + im3 = self.roundtrip(hopper(), progression=0) # compatibility + self.assertFalse(im2.info.get("progressive")) + self.assertFalse(im2.info.get("progression")) + self.assertFalse(im3.info.get("progressive")) + self.assertFalse(im3.info.get("progression")) + im2 = self.roundtrip(hopper(), progressive=1) im3 = self.roundtrip(hopper(), progression=1) # compatibility self.assert_image_equal(im1, im2) self.assert_image_equal(im1, im3) - self.assertFalse(im1.info.get("progressive")) - self.assertFalse(im1.info.get("progression")) self.assertTrue(im2.info.get("progressive")) self.assertTrue(im2.info.get("progression")) self.assertTrue(im3.info.get("progressive"))