6.0.0 ----- Backwards Incompatible Changes ============================== Python 3.4 dropped ^^^^^^^^^^^^^^^^^^ Python 3.4 is EOL since 2019-03-16 and no longer supported. We will not be creating binaries, testing, or retaining compatibility with this version. The final version of Pillow for Python 3.4 is 5.4.1. Removed deprecated PIL.OleFileIO ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ``PIL.OleFileIO`` was removed as a vendored file and in Pillow 4.0.0 (2017-01) in favour of the upstream :pypi:`olefile` Python package, and replaced with an :py:exc:`ImportError`. The deprecated file has now been removed from Pillow. If needed, install from PyPI (eg. ``python3 -m pip install olefile``). Removed deprecated ImageOps functions ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Several undocumented functions in ``ImageOps`` were deprecated in Pillow 4.3.0 (2017-10) and have now been removed: ``gaussian_blur``, ``gblur``, ``unsharp_mask``, ``usm`` and ``box_blur``. Use the equivalent operations in ``ImageFilter`` instead. Removed deprecated VERSION ^^^^^^^^^^^^^^^^^^^^^^^^^^ ``VERSION`` (the old PIL version, always 1.1.7) has been removed. Use ``__version__`` instead. API Changes =========== Deprecations ^^^^^^^^^^^^ Python 2.7 ~~~~~~~~~~ Python 2.7 reaches end-of-life on 2020-01-01. Pillow 7.0.0 will be released on 2020-01-01 and will drop support for Python 2.7, making Pillow 6.x the last series to support Python 2. PyQt4 and PySide ~~~~~~~~~~~~~~~~ Qt 4 reached end-of-life on 2015-12-19. Its Python bindings are also EOL: PyQt4 since 2018-08-31 and PySide since 2015-10-14. Support for PyQt4 and PySide has been deprecated from ``ImageQt`` and will be removed in a future version. Please upgrade to PyQt5 or PySide2. PIL.*ImagePlugin.__version__ attributes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ These version constants have been deprecated and will be removed in a future version. * ``BmpImagePlugin.__version__`` * ``CurImagePlugin.__version__`` * ``DcxImagePlugin.__version__`` * ``EpsImagePlugin.__version__`` * ``FliImagePlugin.__version__`` * ``FpxImagePlugin.__version__`` * ``GdImageFile.__version__`` * ``GifImagePlugin.__version__`` * ``IcoImagePlugin.__version__`` * ``ImImagePlugin.__version__`` * ``ImtImagePlugin.__version__`` * ``IptcImagePlugin.__version__`` * ``Jpeg2KImagePlugin.__version__`` * ``JpegImagePlugin.__version__`` * ``McIdasImagePlugin.__version__`` * ``MicImagePlugin.__version__`` * ``MpegImagePlugin.__version__`` * ``MpoImagePlugin.__version__`` * ``MspImagePlugin.__version__`` * ``PalmImagePlugin.__version__`` * ``PcdImagePlugin.__version__`` * ``PcxImagePlugin.__version__`` * ``PdfImagePlugin.__version__`` * ``PixarImagePlugin.__version__`` * ``PngImagePlugin.__version__`` * ``PpmImagePlugin.__version__`` * ``PsdImagePlugin.__version__`` * ``SgiImagePlugin.__version__`` * ``SunImagePlugin.__version__`` * ``TgaImagePlugin.__version__`` * ``TiffImagePlugin.__version__`` * ``WmfImagePlugin.__version__`` * ``XbmImagePlugin.__version__`` * ``XpmImagePlugin.__version__`` * ``XVThumbImagePlugin.__version__`` Use ``PIL.__version__`` instead. ImageCms.CmsProfile attributes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Some attributes in ``ImageCms.CmsProfile`` have been deprecated since Pillow 3.2.0. From 6.0.0, they issue a :py:exc:`DeprecationWarning`: ======================== =============================== Deprecated Use instead ======================== =============================== ``color_space`` Padded ``xcolor_space`` ``pcs`` Padded ``connection_space`` ``product_copyright`` Unicode ``copyright`` ``product_desc`` Unicode ``profile_description`` ``product_description`` Unicode ``profile_description`` ``product_manufacturer`` Unicode ``manufacturer`` ``product_model`` Unicode ``model`` ======================== =============================== MIME type improvements ^^^^^^^^^^^^^^^^^^^^^^ Previously, all JPEG2000 images had the MIME type "image/jpx". This has now been corrected. After the file format drivers have been loaded, ``Image.MIME["JPEG2000"]`` will return "image/jp2". ``ImageFile.get_format_mimetype`` will return "image/jpx" if a JPX profile is present, or "image/jp2" otherwise. Previously, all SGI images had the MIME type "image/rgb". This has now been corrected. After the file format drivers have been loaded, ``Image.MIME["SGI"]`` will return "image/sgi". ``ImageFile.get_format_mimetype`` will return "image/rgb" if RGB image data is present, or "image/sgi" otherwise. MIME types have been added to the PPM format. After the file format drivers have been loaded, ``Image.MIME["PPM"]`` will now return the generic "image/x-portable-anymap". ``ImageFile.get_format_mimetype`` will return a MIME type specific to the color type. The TGA, PCX and ICO formats also now have MIME types: "image/x-tga", "image/x-pcx" and "image/x-icon" respectively. API Additions ============= DIB file format ^^^^^^^^^^^^^^^ Pillow now supports reading and writing the Device Independent Bitmap file format. Image.quantize ^^^^^^^^^^^^^^ The ``dither`` option is now a customisable parameter (was previously hardcoded to ``1``). This parameter takes the same values used in :py:meth:`~PIL.Image.Image.convert`. New language parameter ^^^^^^^^^^^^^^^^^^^^^^ These text-rendering functions now accept a ``language`` parameter to request language-specific glyphs and ligatures from the font: * ``ImageDraw.ImageDraw.multiline_text()`` * ``ImageDraw.ImageDraw.multiline_textsize()`` * ``ImageDraw.ImageDraw.text()`` * ``ImageDraw.ImageDraw.textsize()`` * ``ImageFont.ImageFont.getmask()`` * ``ImageFont.ImageFont.getsize_multiline()`` * ``ImageFont.ImageFont.getsize()`` Added EXIF class ^^^^^^^^^^^^^^^^ :py:meth:`~PIL.Image.Image.getexif` has been added, which returns an :py:class:`~PIL.Image.Exif` instance. Values can be retrieved and set like a dictionary. When saving JPEG, PNG or WEBP, the instance can be passed as an ``exif`` argument to include any changes in the output image. Added ImageOps.exif_transpose ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :py:meth:`~PIL.ImageOps.exif_transpose` returns a copy of an image, transposed according to its EXIF Orientation tag. PNG EXIF data ^^^^^^^^^^^^^ EXIF data can now be read from and saved to PNG images. However, unlike other image formats, EXIF data is not guaranteed to be present in :py:attr:`~PIL.Image.Image.info` until :py:meth:`~PIL.Image.Image.load` has been called. Other Changes ============= Reading new DDS image format ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Pillow can now read uncompressed RGB data from DDS images. Reading TIFF with old-style JPEG compression ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Added support reading TIFF files with old-style JPEG compression through LibTIFF. All YCbCr TIFF images are now always read as RGB. TIFF compression codecs ^^^^^^^^^^^^^^^^^^^^^^^ Support has been added for the LZMA, Zstd and WebP TIFF compression codecs. Improved support for transposing I;16 images ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ I;16, I;16L and I;16B are now supported image modes for all :py:meth:`~PIL.Image.Image.transpose` operations.