mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-11-04 01:47:47 +03:00 
			
		
		
		
	Use truth value when checking for optimize option on save
This commit is contained in:
		
							parent
							
								
									508763aa25
								
							
						
					
					
						commit
						d3d29ab2e3
					
				| 
						 | 
					@ -688,12 +688,14 @@ def _save(im, fp, filename):
 | 
				
			||||||
    progressive = info.get("progressive", False) or\
 | 
					    progressive = info.get("progressive", False) or\
 | 
				
			||||||
                  info.get("progression", False)
 | 
					                  info.get("progression", False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    optimize = info.get("optimize", False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # get keyword arguments
 | 
					    # get keyword arguments
 | 
				
			||||||
    im.encoderconfig = (
 | 
					    im.encoderconfig = (
 | 
				
			||||||
        quality,
 | 
					        quality,
 | 
				
			||||||
        progressive,
 | 
					        progressive,
 | 
				
			||||||
        info.get("smooth", 0),
 | 
					        info.get("smooth", 0),
 | 
				
			||||||
        "optimize" in info,
 | 
					        optimize,
 | 
				
			||||||
        info.get("streamtype", 0),
 | 
					        info.get("streamtype", 0),
 | 
				
			||||||
        dpi[0], dpi[1],
 | 
					        dpi[0], dpi[1],
 | 
				
			||||||
        subsampling,
 | 
					        subsampling,
 | 
				
			||||||
| 
						 | 
					@ -707,7 +709,7 @@ def _save(im, fp, filename):
 | 
				
			||||||
    # channels*size, this is a value that's been used in a django patch.
 | 
					    # channels*size, this is a value that's been used in a django patch.
 | 
				
			||||||
    # https://github.com/matthewwithanm/django-imagekit/issues/50
 | 
					    # https://github.com/matthewwithanm/django-imagekit/issues/50
 | 
				
			||||||
    bufsize = 0
 | 
					    bufsize = 0
 | 
				
			||||||
    if "optimize" in info or progressive:
 | 
					    if optimize or progressive:
 | 
				
			||||||
        # keep sets quality to 0, but the actual value may be high.
 | 
					        # keep sets quality to 0, but the actual value may be high.
 | 
				
			||||||
        if quality >= 95 or quality == 0:
 | 
					        if quality >= 95 or quality == 0:
 | 
				
			||||||
            bufsize = 2 * im.size[0] * im.size[1]
 | 
					            bufsize = 2 * im.size[0] * im.size[1]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -696,15 +696,10 @@ def _save(im, fp, filename, chunk=putchunk, check=0):
 | 
				
			||||||
            mode = "%s;%d" % (mode, bits)
 | 
					            mode = "%s;%d" % (mode, bits)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # encoder options
 | 
					    # encoder options
 | 
				
			||||||
    if "dictionary" in im.encoderinfo:
 | 
					    im.encoderconfig = (im.encoderinfo.get("optimize", False),
 | 
				
			||||||
        dictionary = im.encoderinfo["dictionary"]
 | 
					 | 
				
			||||||
    else:
 | 
					 | 
				
			||||||
        dictionary = b""
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    im.encoderconfig = ("optimize" in im.encoderinfo,
 | 
					 | 
				
			||||||
                        im.encoderinfo.get("compress_level", -1),
 | 
					                        im.encoderinfo.get("compress_level", -1),
 | 
				
			||||||
                        im.encoderinfo.get("compress_type", -1),
 | 
					                        im.encoderinfo.get("compress_type", -1),
 | 
				
			||||||
                        dictionary)
 | 
					                        im.encoderinfo.get("dictionary", b""))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # get the corresponding PNG mode
 | 
					    # get the corresponding PNG mode
 | 
				
			||||||
    try:
 | 
					    try:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -126,9 +126,12 @@ class TestFileJpeg(PillowTestCase):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_optimize(self):
 | 
					    def test_optimize(self):
 | 
				
			||||||
        im1 = self.roundtrip(hopper())
 | 
					        im1 = self.roundtrip(hopper())
 | 
				
			||||||
        im2 = self.roundtrip(hopper(), optimize=1)
 | 
					        im2 = self.roundtrip(hopper(), optimize=0)
 | 
				
			||||||
 | 
					        im3 = self.roundtrip(hopper(), optimize=1)
 | 
				
			||||||
        self.assert_image_equal(im1, im2)
 | 
					        self.assert_image_equal(im1, im2)
 | 
				
			||||||
 | 
					        self.assert_image_equal(im1, im3)
 | 
				
			||||||
        self.assertGreaterEqual(im1.bytes, im2.bytes)
 | 
					        self.assertGreaterEqual(im1.bytes, im2.bytes)
 | 
				
			||||||
 | 
					        self.assertGreaterEqual(im1.bytes, im3.bytes)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_optimize_large_buffer(self):
 | 
					    def test_optimize_large_buffer(self):
 | 
				
			||||||
        # https://github.com/python-pillow/Pillow/issues/148
 | 
					        # https://github.com/python-pillow/Pillow/issues/148
 | 
				
			||||||
| 
						 | 
					@ -139,9 +142,14 @@ class TestFileJpeg(PillowTestCase):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_progressive(self):
 | 
					    def test_progressive(self):
 | 
				
			||||||
        im1 = self.roundtrip(hopper())
 | 
					        im1 = self.roundtrip(hopper())
 | 
				
			||||||
        im2 = self.roundtrip(hopper(), progressive=True)
 | 
					        im2 = self.roundtrip(hopper(), progressive=False)
 | 
				
			||||||
        self.assert_image_equal(im1, im2)
 | 
					        im3 = self.roundtrip(hopper(), progressive=True)
 | 
				
			||||||
        self.assertGreaterEqual(im1.bytes, im2.bytes)
 | 
					        self.assertFalse(im1.info.get("progressive"))
 | 
				
			||||||
 | 
					        self.assertFalse(im2.info.get("progressive"))
 | 
				
			||||||
 | 
					        self.assertTrue(im3.info.get("progressive"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.assert_image_equal(im1, im3)
 | 
				
			||||||
 | 
					        self.assertGreaterEqual(im1.bytes, im3.bytes)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_progressive_large_buffer(self):
 | 
					    def test_progressive_large_buffer(self):
 | 
				
			||||||
        f = self.tempfile('temp.jpg')
 | 
					        f = self.tempfile('temp.jpg')
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user