mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-02-04 21:50:54 +03:00
Merge pull request #993 from moriyoshi/fix/moriyoshi/gif-encoder-optimization-bug
The optimization algorithm is only applicable to the image of mode="P" or "L".
This commit is contained in:
commit
42b59046e7
|
@ -433,7 +433,7 @@ def getheader(im, palette=None, info=None):
|
||||||
|
|
||||||
usedPaletteColors = paletteBytes = None
|
usedPaletteColors = paletteBytes = None
|
||||||
|
|
||||||
if optimize:
|
if im.mode in ("P", "L") and optimize:
|
||||||
usedPaletteColors = []
|
usedPaletteColors = []
|
||||||
|
|
||||||
# check which colors are used
|
# check which colors are used
|
||||||
|
|
|
@ -28,13 +28,22 @@ class TestFileGif(PillowTestCase):
|
||||||
def test_optimize(self):
|
def test_optimize(self):
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
|
|
||||||
def test(optimize):
|
def test_grayscale(optimize):
|
||||||
im = Image.new("L", (1, 1), 0)
|
im = Image.new("L", (1, 1), 0)
|
||||||
file = BytesIO()
|
file = BytesIO()
|
||||||
im.save(file, "GIF", optimize=optimize)
|
im.save(file, "GIF", optimize=optimize)
|
||||||
return len(file.getvalue())
|
return len(file.getvalue())
|
||||||
self.assertEqual(test(0), 800)
|
|
||||||
self.assertEqual(test(1), 38)
|
def test_bilevel(optimize):
|
||||||
|
im = Image.new("1", (1, 1), 0)
|
||||||
|
file = BytesIO()
|
||||||
|
im.save(file, "GIF", optimize=optimize)
|
||||||
|
return len(file.getvalue())
|
||||||
|
|
||||||
|
self.assertEqual(test_grayscale(0), 800)
|
||||||
|
self.assertEqual(test_grayscale(1), 38)
|
||||||
|
self.assertEqual(test_bilevel(0), 800)
|
||||||
|
self.assertEqual(test_bilevel(1), 800)
|
||||||
|
|
||||||
def test_optimize_full_l(self):
|
def test_optimize_full_l(self):
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
|
|
Loading…
Reference in New Issue
Block a user