2023-04-02 23:41:16 +03:00
10.0.0
------
Backwards Incompatible Changes
==============================
Categories
^^^^^^^^^^
`` im.category `` has been removed, along with the related `` Image.NORMAL `` ,
`` Image.SEQUENCE `` and `` Image.CONTAINER `` attributes.
To determine if an image has multiple frames or not,
`` getattr(im, "is_animated", False) `` can be used instead.
Tk/Tcl 8.4
^^^^^^^^^^
Support for Tk/Tcl 8.4 has been removed.
JpegImagePlugin.convert_dict_qtables
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Since deprecation in Pillow 8.3.0, the `` convert_dict_qtables `` method no longer
performed any operations on the data given to it, and has been removed.
ImagePalette size parameter
^^^^^^^^^^^^^^^^^^^^^^^^^^^
Before Pillow 8.3.0, `` ImagePalette `` required palette data of particular lengths by
default, and the `` size `` parameter could be used to override that. Pillow 8.3.0
removed the default required length, also removing the need for the `` size `` parameter.
ImageShow.Viewer.show_file file argument
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The `` file `` argument in :py:meth: `~PIL.ImageShow.Viewer.show_file()` has been
removed and replaced by `` path `` .
In effect, `` viewer.show_file("test.jpg") `` will continue to work unchanged.
Constants
^^^^^^^^^
A number of constants have been removed.
Instead, `` enum.IntEnum `` classes have been added.
===================================================== ============================================================
Removed Use instead
===================================================== ============================================================
`` Image.LINEAR `` `` Image.BILINEAR `` or `` Image.Resampling.BILINEAR ``
`` Image.CUBIC `` `` Image.BICUBIC `` or `` Image.Resampling.BICUBIC ``
`` Image.ANTIALIAS `` `` Image.LANCZOS `` or `` Image.Resampling.LANCZOS ``
`` ImageCms.INTENT_PERCEPTUAL `` `` ImageCms.Intent.PERCEPTUAL ``
`` ImageCms.INTENT_RELATIVE_COLORMETRIC `` `` ImageCms.Intent.RELATIVE_COLORMETRIC ``
`` ImageCms.INTENT_SATURATION `` `` ImageCms.Intent.SATURATION ``
`` ImageCms.INTENT_ABSOLUTE_COLORIMETRIC `` `` ImageCms.Intent.ABSOLUTE_COLORIMETRIC ``
`` ImageCms.DIRECTION_INPUT `` `` ImageCms.Direction.INPUT ``
`` ImageCms.DIRECTION_OUTPUT `` `` ImageCms.Direction.OUTPUT ``
`` ImageCms.DIRECTION_PROOF `` `` ImageCms.Direction.PROOF ``
`` ImageFont.LAYOUT_BASIC `` `` ImageFont.Layout.BASIC ``
`` ImageFont.LAYOUT_RAQM `` `` ImageFont.Layout.RAQM ``
`` BlpImagePlugin.BLP_FORMAT_JPEG `` `` BlpImagePlugin.Format.JPEG ``
`` BlpImagePlugin.BLP_ENCODING_UNCOMPRESSED `` `` BlpImagePlugin.Encoding.UNCOMPRESSED ``
`` BlpImagePlugin.BLP_ENCODING_DXT `` `` BlpImagePlugin.Encoding.DXT ``
`` BlpImagePlugin.BLP_ENCODING_UNCOMPRESSED_RAW_RGBA `` `` BlpImagePlugin.Encoding.UNCOMPRESSED_RAW_RGBA ``
`` BlpImagePlugin.BLP_ALPHA_ENCODING_DXT1 `` `` BlpImagePlugin.AlphaEncoding.DXT1 ``
`` BlpImagePlugin.BLP_ALPHA_ENCODING_DXT3 `` `` BlpImagePlugin.AlphaEncoding.DXT3 ``
`` BlpImagePlugin.BLP_ALPHA_ENCODING_DXT5 `` `` BlpImagePlugin.AlphaEncoding.DXT5 ``
`` FtexImagePlugin.FORMAT_DXT1 `` `` FtexImagePlugin.Format.DXT1 ``
`` FtexImagePlugin.FORMAT_UNCOMPRESSED `` `` FtexImagePlugin.Format.UNCOMPRESSED ``
`` PngImagePlugin.APNG_DISPOSE_OP_NONE `` `` PngImagePlugin.Disposal.OP_NONE ``
`` PngImagePlugin.APNG_DISPOSE_OP_BACKGROUND `` `` PngImagePlugin.Disposal.OP_BACKGROUND ``
`` PngImagePlugin.APNG_DISPOSE_OP_PREVIOUS `` `` PngImagePlugin.Disposal.OP_PREVIOUS ``
`` PngImagePlugin.APNG_BLEND_OP_SOURCE `` `` PngImagePlugin.Blend.OP_SOURCE ``
`` PngImagePlugin.APNG_BLEND_OP_OVER `` `` PngImagePlugin.Blend.OP_OVER ``
===================================================== ============================================================
FitsStubImagePlugin
^^^^^^^^^^^^^^^^^^^
The stub image plugin `` FitsStubImagePlugin `` has been removed.
FITS images can be read without a handler through :mod: `~PIL.FitsImagePlugin` instead.
2023-04-05 12:10:51 +03:00
Font size and offset methods
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Several functions for computing the size and offset of rendered text have been removed:
=============================================================== =============================================================================================================
Removed Use instead
=============================================================== =============================================================================================================
`` FreeTypeFont.getsize() `` and `` FreeTypeFont.getoffset() `` :py:meth: `.FreeTypeFont.getbbox` and :py:meth: `.FreeTypeFont.getlength`
`` FreeTypeFont.getsize_multiline() `` :py:meth: `.ImageDraw.multiline_textbbox`
`` ImageFont.getsize() `` :py:meth: `.ImageFont.getbbox` and :py:meth: `.ImageFont.getlength`
`` TransposedFont.getsize() `` :py:meth: `.TransposedFont.getbbox` and :py:meth: `.TransposedFont.getlength`
`` ImageDraw.textsize() `` and `` ImageDraw.multiline_textsize() `` :py:meth: `.ImageDraw.textbbox` , :py:meth: `.ImageDraw.textlength` and :py:meth: `.ImageDraw.multiline_textbbox`
`` ImageDraw2.Draw.textsize() `` :py:meth: `.ImageDraw2.Draw.textbbox` and :py:meth: `.ImageDraw2.Draw.textlength`
=============================================================== =============================================================================================================
2023-04-02 23:41:16 +03:00
FreeTypeFont.getmask2 fill parameter
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The undocumented `` fill `` parameter of :py:meth: `.FreeTypeFont.getmask2` has been
removed.
PhotoImage.paste box parameter
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The `` box `` parameter was unused and has been removed.
PyQt5 and PySide2
^^^^^^^^^^^^^^^^^
`Qt 5 reached end-of-life <https://www.qt.io/blog/qt-5.15-released> `_ on 2020-12-08 for
open-source users (and will reach EOL on 2023-12-08 for commercial licence holders).
Support for PyQt5 and PySide2 has been removed from `` ImageQt `` . Upgrade to
`PyQt6 <https://www.riverbankcomputing.com/static/Docs/PyQt6/> `_ or
2023-05-11 01:13:33 +03:00
`PySide6 <https://doc.qt.io/qtforpython-6/> `_ instead.
2023-04-02 23:41:16 +03:00
Image.coerce_e
^^^^^^^^^^^^^^
This undocumented method has been removed.
Deprecations
============
TODO
^^^^
TODO
API Changes
===========
2023-05-04 08:37:35 +03:00
Added line width parameter to ImageDraw regular_polygon
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2023-04-02 23:41:16 +03:00
2023-05-04 08:37:35 +03:00
An optional line `` width `` parameter has been added to
`` ImageDraw.Draw.regular_polygon `` .
2023-04-02 23:41:16 +03:00
API Additions
=============
TODO
^^^^
TODO
Security
========
TODO
^^^^
TODO
Other Changes
=============
2023-05-14 15:42:39 +03:00
Support display_jpeg() in IPython
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
In addition to `` display() `` and `` display_png `` , `` display_jpeg() `` can now
also be used to display images in IPython::
from PIL import Image
from IPython.display import display_jpeg
im = Image.new("RGB", (100, 100), (255, 0, 0))
display_jpeg(im)
2023-05-04 01:01:48 +03:00
Support reading signed 8-bit TIFF images
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2023-04-02 23:41:16 +03:00
2023-05-04 01:01:48 +03:00
TIFF images with signed integer data, 8 bits per sample and a photometric
interpretaton of BlackIsZero can now be read.