13.0.0 (unreleased)

Security

TODO

TODO

CVE YYYY-XXXXX: TODO

TODO

Backwards incompatible changes

Saving I mode images as PNG

In order to fit the 32 bits of I mode images into PNG, when PNG images can only contain at most 16 bits for a channel, Pillow has been clipping the values. Rather than quietly changing the data, this is now removed. Instead, the image can be converted to another mode before saving:

from PIL import Image
im = Image.new("I", (1, 1))
im.convert("I;16").save("out.png")

Image.fromarray mode parameter

Using the mode parameter in fromarray() was deprecated in Pillow 11.3.0. In Pillow 12.0.0, this was partially reverted, and now the only functionality removed is when the mode changes data types. Since pixel values do not contain information about palettes or color spaces, the parameter can still be used to place grayscale L mode data within a P mode image, or read RGB data as YCbCr for example. If omitted, the mode will be automatically determined from the object’s shape and type.

Image.Image.get_child_images()

Image.Image.get_child_images() has been 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.

Image._show

Image._show has been removed. Use show() instead.

ImageCms.ImageCmsProfile.product_name and .product_info

ImageCms.ImageCmsProfile.product_name and the corresponding .product_info attributes have been removed. They were set to None since Pillow 2.3.0.

Deprecations

TODO

TODO

API changes

TODO

TODO

API additions

TODO

TODO

Other changes

TODO

TODO