diff --git a/docs/handbook/image-file-formats.rst b/docs/handbook/image-file-formats.rst index fe310df6443..38c00f8702c 100644 --- a/docs/handbook/image-file-formats.rst +++ b/docs/handbook/image-file-formats.rst @@ -266,9 +266,12 @@ following options are available:: :py:class:`PIL.ImagePalette.ImagePalette` object. **optimize** - If present and true, attempt to compress the palette by - eliminating unused colors. This is only useful if the palette can - be compressed to the next smaller power of 2 elements. + Whether to attempt to compress the palette by eliminating unused colors. + This is attempted by default, unless a palette is specified as an option or + as part of the first image's :py:attr:`~PIL.Image.Image.info` dictionary. + + This is only useful if the palette can be compressed to the next smaller + power of 2 elements. Note that if the image you are saving comes from an existing GIF, it may have the following properties in its :py:attr:`~PIL.Image.Image.info` dictionary. diff --git a/src/PIL/GifImagePlugin.py b/src/PIL/GifImagePlugin.py index bdea02005e7..0793d4b4277 100644 --- a/src/PIL/GifImagePlugin.py +++ b/src/PIL/GifImagePlugin.py @@ -656,7 +656,7 @@ def _save(im, fp, filename, save_all=False): palette = im.encoderinfo.get("palette", im.info.get("palette")) else: palette = None - im.encoderinfo["optimize"] = im.encoderinfo.get("optimize", True) + im.encoderinfo.setdefault("optimize", True) if not save_all or not _write_multiple_frames(im, fp, palette): _write_single_frame(im, fp, palette)