11.2.0 (unreleased)

Security

TODO

TODO

CVE YYYY-XXXXX: TODO

TODO

Backwards Incompatible Changes

TODO

Deprecations

Image.Image.get_child_images()

Deprecated since version 11.2.0.

Image.Image.get_child_images() has been deprecated. and will be removed in Pillow 13 (2026-10-15). It will be moved to ImageFile.ImageFile.get_child_images(). The method uses an image’s file pointer, and so child images could only be retrieved from an PIL.ImageFile.ImageFile instance.

API Changes

TODO

TODO

API Additions

"justify" multiline text alignment

In addition to "left", "center" and "right", multiline text can also be aligned using "justify" in ImageDraw:

from PIL import Image, ImageDraw
im = Image.new("RGB", (50, 25))
draw = ImageDraw.Draw(im)
draw.multiline_text((0, 0), "Multiline\ntext 1", align="justify")
draw.multiline_textbbox((0, 0), "Multiline\ntext 2", align="justify")

Check for MozJPEG

You can check if Pillow has been built against the MozJPEG version of the libjpeg library, and what version of MozJPEG is being used:

from PIL import features
features.check_feature("mozjpeg")  # True or False
features.version_feature("mozjpeg")  # "4.1.1" for example, or None

Saving compressed DDS images

Compressed DDS images can now be saved using a pixel_format argument. DXT1, DXT3, DXT5, BC2, BC3 and BC5 are supported:

im.save("out.dds", pixel_format="DXT1")

Other Changes

TODO

TODO