5.2.0

API Changes

Deprecations

These version constants have been deprecated. VERSION will be removed inPillow 6.0.0, and PILLOW_VERSION will be removed after that.

  • PIL.VERSION (old PIL version 1.1.7)
  • PIL.PILLOW_VERSION
  • PIL.Image.VERSION
  • PIL.Image.PILLOW_VERSION

Use PIL.version instead.

API Additions

3D color lookup tables

Support for 3D color lookup table transformations has been added.

Color3DLUT.generate transforms 3-channel pixels using the values of thechannels as coordinates in the 3D lookup table and interpolating the nearestelements.

It allows you to apply almost any color transformation in constant time byusing pre-calculated decimated tables.

Color3DLUT.transform() allows altering table values with a callback.

If NumPy is installed, the performance of argument conversion is dramaticallyimproved when a source table supports buffer interface (NumPy && arrays inPython >= 3).

ImageColor.getrgb

Previously Image.rotate only supported HSL color strings. Now HSB and HSVstrings are also supported, as well as float values. For example,ImageColor.getrgb("hsv(180,100%,99.5%)").

ImageFile.get_format_mimetype

ImageFile.get_format_mimetype has been added to return the MIME type of animage file, where available. For example,Image.open("hopper.jpg").get_format_mimetype() returns "image/jpeg".

ImageFont.getsize_multiline

A new method to return the size of multiline text, for examplefont.getsize_multiline("ABC\nAaaa")

Image.rotate

A new named parameter, fillcolor, has been added to Image.rotate. Thiscolor specifies the background color to use in the area outside the rotatedimage. This parameter takes the same color specifications as used inImage.new.

TGA file format

Pillow can now read and write LA data (in addition to L, P, RGB and RGBA), andwrite RLE data (in addition to uncompressed).

Other Changes

Support added for Python 3.7

Pillow 5.2 supports Python 3.7.

Build macOS wheels with Xcode 6.4, supporting older macOS versions

The macOS wheels for Pillow 5.1.0 were built with Xcode 9.2, meaning 10.12Sierra was the lowest supported version.

Prior to Pillow 5.1.0, Xcode 8 was used, supporting El Capitan 10.11.

Instead, Pillow 5.2.0 is built with the oldest available Xcode 6.4 to supportat least 10.10 Yosemite.

Fix _i2f compilation with some GCC versions

For example, this allows compilation with GCC 4.8 on NetBSD.

Resolve confusion getting PIL / Pillow version string

Re: “version constants deprecated” listed above, as user gnbl notes in #3082:

  • it’s confusing that PIL.VERSION returns the version string of the former PIL instead of Pillow’s
  • there does not seem to be documentation on this version number (why this, will it ever change, ..) e.g. at https://pillow.readthedocs.io/en/5.1.x/about.html#why-a-fork
  • it’s confusing that PIL.version is a module and does not return the version information directly or hints on how to get it
  • the package information header is essentially useless (placeholder, does not even mention Pillow, nor the version)
  • PIL._version module documentation comment could explain how to access the version information

We have attempted to resolve these issues in #3083, #3090 and #3218.