Backwards Incompatible Changes#

Image.core.open_ppm removed#

The nominally private/debugging function Image.core.open_ppm has been removed. If you were using this function, please use Image.open instead.


Deprecation Warning when Saving JPEGs#

JPEG images cannot contain an alpha channel. Pillow prior to 3.4.0 silently drops the alpha channel. With this release Pillow will now issue a DeprecationWarning when attempting to save a RGBA mode image as a JPEG. This will become an error in Pillow 4.2.

API Additions#

New resizing filters#

Two new filters available for Image.resize() and Image.thumbnail() functions: BOX and HAMMING. BOX is the high-performance filter with two times shorter window than BILINEAR. It can be used for image reduction 3 and more times and produces a sharper result than BILINEAR.

HAMMING filter has the same performance as BILINEAR filter while providing the image downscaling quality comparable to BICUBIC. Both new filters don’t show good quality for the image upscaling.

New DDS Decoders#

Pillow can now decode DXT3 images, as well as the previously supported DXT1 and DXT5 formats. All three formats are now decoded in C code for better performance.

Append images to GIF#

Additional frames can now be appended when saving a GIF file, through the append_images argument. The new frames are passed in as a list of images, which may be have multiple frames themselves.

Note that the append_images argument is only used if save_all is also in effect, e.g.:

im.save(out, save_all=True, append_images=[im1, im2, ...])

Save multiple frame TIFF#

Multiple frames can now be saved in a TIFF file by using the save_all option. e.g.:

im.save("filename.tiff", format="TIFF", save_all=True)