Libimagequant support

There is now support for using libimagequant as a higher quality quantization option in Image.quantize() on Unix-like platforms. This support requires building Pillow from source against libimagequant. We cannot distribute binaries due to licensing differences.

New Setup.py options

There are two new options to control the build_ext task in setup.py:

  • --debug dumps all of the directories and files that are checked when searching for libraries or headers when building the extensions.
  • --disable-platform-guessing removes many of the directories that are checked for libraries and headers for build systems or cross compilers that specify that information in via environment variables.


Image resampling for 8-bit per channel images was rewritten using only integer computings. This is faster on most platforms and doesn’t introduce precision errors on the wide range of scales. With other performance improvements, this makes resampling 60% faster on average.

Color calculation for images in the LA mode on semitransparent pixels was fixed.


Rotation for angles divisible by 90 degrees now always uses transposition. This greatly improves both quality and performance in this case. Also, the bug with wrong image size calculation when rotating by 90 degrees was fixed.

Image Metadata

The return type for binary data in version 2 Exif and Tiff metadata has been changed from a tuple of integers to bytes. This is a change from the behavior since 3.0.0.