9.0.0

Backwards Incompatible Changes

Python 3.6

Pillow has dropped support for Python 3.6, which reached end-of-life on 2021-12-23.

PILLOW_VERSION constant

PILLOW_VERSION has been removed. Use __version__ instead.

FreeType 2.7

Support for FreeType 2.7 has been removed; FreeType 2.8 is the minimum supported.

We recommend upgrading to at least FreeType 2.10.4, which fixed a severe vulnerability introduced in FreeType 2.6 (CVE-2020-15999).

Image.show command parameter

The command parameter has been removed. Use a subclass of PIL.ImageShow.Viewer instead.

Image._showxv

Image._showxv has been removed. Use show() instead. If custom behaviour is required, use register() to add a custom Viewer class.

ImageFile.raise_ioerror

IOError was merged into OSError in Python 3.3. So, ImageFile.raise_ioerror has been removed. Use ImageFile.raise_oserror instead.

Deprecations

TODO

TODO

API Changes

Added line width parameter to ImageDraw polygon

An optional line width parameter has been added to ImageDraw.Draw.polygon.

TODO

API Additions

Added support for “title” argument to DisplayViewer

Support has been added for the “title” argument in DisplayViewer, so that when im.show() or ImageShow.show() use the display command line tool, the “title” argument will also now be supported, e.g. im.show(title="My Image") and ImageShow.show(im, title="My Image").

Security

TODO

TODO

Other Changes

Added support for pickling TrueType fonts

TrueType fonts may now be pickled and unpickled. For example:

import pickle
from PIL import ImageFont

font = ImageFont.truetype("arial.ttf", size=30)
pickled_font = pickle.dumps(font, protocol=pickle.HIGHEST_PROTOCOL)

# Later...
unpickled_font = pickle.loads(pickled_font)

Added support for additional TGA orientations

TGA images with top right or bottom right orientations are now supported.