mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-11-10 19:56:47 +03:00
Merge pull request #2129 from radarhere/truth
Use truth value when checking for optimize option on save
This commit is contained in:
commit
2401150ce9
|
@ -688,12 +688,14 @@ def _save(im, fp, filename):
|
|||
progressive = info.get("progressive", False) or\
|
||||
info.get("progression", False)
|
||||
|
||||
optimize = info.get("optimize", False)
|
||||
|
||||
# get keyword arguments
|
||||
im.encoderconfig = (
|
||||
quality,
|
||||
progressive,
|
||||
info.get("smooth", 0),
|
||||
"optimize" in info,
|
||||
optimize,
|
||||
info.get("streamtype", 0),
|
||||
dpi[0], dpi[1],
|
||||
subsampling,
|
||||
|
@ -707,7 +709,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:
|
||||
if optimize 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]
|
||||
|
|
|
@ -696,15 +696,10 @@ def _save(im, fp, filename, chunk=putchunk, check=0):
|
|||
mode = "%s;%d" % (mode, bits)
|
||||
|
||||
# encoder options
|
||||
if "dictionary" in im.encoderinfo:
|
||||
dictionary = im.encoderinfo["dictionary"]
|
||||
else:
|
||||
dictionary = b""
|
||||
|
||||
im.encoderconfig = ("optimize" in im.encoderinfo,
|
||||
im.encoderconfig = (im.encoderinfo.get("optimize", False),
|
||||
im.encoderinfo.get("compress_level", -1),
|
||||
im.encoderinfo.get("compress_type", -1),
|
||||
dictionary)
|
||||
im.encoderinfo.get("dictionary", b""))
|
||||
|
||||
# get the corresponding PNG mode
|
||||
try:
|
||||
|
|
|
@ -126,9 +126,12 @@ class TestFileJpeg(PillowTestCase):
|
|||
|
||||
def test_optimize(self):
|
||||
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, im3)
|
||||
self.assertGreaterEqual(im1.bytes, im2.bytes)
|
||||
self.assertGreaterEqual(im1.bytes, im3.bytes)
|
||||
|
||||
def test_optimize_large_buffer(self):
|
||||
# https://github.com/python-pillow/Pillow/issues/148
|
||||
|
@ -139,9 +142,14 @@ class TestFileJpeg(PillowTestCase):
|
|||
|
||||
def test_progressive(self):
|
||||
im1 = self.roundtrip(hopper())
|
||||
im2 = self.roundtrip(hopper(), progressive=True)
|
||||
self.assert_image_equal(im1, im2)
|
||||
self.assertGreaterEqual(im1.bytes, im2.bytes)
|
||||
im2 = self.roundtrip(hopper(), progressive=False)
|
||||
im3 = self.roundtrip(hopper(), progressive=True)
|
||||
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):
|
||||
f = self.tempfile('temp.jpg')
|
||||
|
|
|
@ -219,20 +219,20 @@ The :py:meth:`~PIL.Image.Image.save` method supports the following options:
|
|||
image quality.
|
||||
|
||||
**optimize**
|
||||
If present, indicates that the encoder should make an extra pass over the
|
||||
image in order to select optimal encoder settings.
|
||||
If present and true, indicates that the encoder should make an extra pass
|
||||
over the image in order to select optimal encoder settings.
|
||||
|
||||
**progressive**
|
||||
If present, indicates that this image should be stored as a progressive
|
||||
JPEG file.
|
||||
If present and true, indicates that this image should be stored as a
|
||||
progressive JPEG file.
|
||||
|
||||
**dpi**
|
||||
A tuple of integers representing the pixel density, ``(x,y)``.
|
||||
|
||||
**icc_profile**
|
||||
If present, the image is stored with the provided ICC profile. If
|
||||
this parameter is not provided, the image will be saved with no
|
||||
profile attached. To preserve the existing profile::
|
||||
If present and true, the image is stored with the provided ICC profile.
|
||||
If this parameter is not provided, the image will be saved with no profile
|
||||
attached. To preserve the existing profile::
|
||||
|
||||
im.save(filename, 'jpeg', icc_profile=im.info.get('icc_profile'))
|
||||
|
||||
|
@ -399,9 +399,9 @@ chunks is limited to ``PngImagePlugin.MAX_TEXT_MEMORY``, defaulting to
|
|||
The :py:meth:`~PIL.Image.Image.save` method supports the following options:
|
||||
|
||||
**optimize**
|
||||
If present, instructs the PNG writer to make the output file as small as
|
||||
possible. This includes extra processing in order to find optimal encoder
|
||||
settings.
|
||||
If present and true, instructs the PNG writer to make the output file as
|
||||
small as possible. This includes extra processing in order to find optimal
|
||||
encoder settings.
|
||||
|
||||
**transparency**
|
||||
For ``P``, ``L``, and ``RGB`` images, this option controls what
|
||||
|
@ -615,8 +615,7 @@ format are currently undocumented.
|
|||
The :py:meth:`~PIL.Image.Image.save` method supports the following options:
|
||||
|
||||
**lossless**
|
||||
If present, instructs the WEBP writer to use lossless
|
||||
compression.
|
||||
If present and true, instructs the WEBP writer to use lossless compression.
|
||||
|
||||
**quality**
|
||||
Integer, 1-100, Defaults to 80. Sets the quality level for
|
||||
|
|
Loading…
Reference in New Issue
Block a user