mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-26 18:06:18 +03:00
26b2aa5165
(cherry picked from commit f2b1bbcf65b327c14646d4113302e3df59555110)
178 lines
6.2 KiB
ReStructuredText
178 lines
6.2 KiB
ReStructuredText
8.0.0
|
|
-----
|
|
|
|
Backwards Incompatible Changes
|
|
==============================
|
|
|
|
Python 3.5
|
|
^^^^^^^^^^
|
|
|
|
Pillow has dropped support for Python 3.5, which reached end-of-life on 2020-09-13.
|
|
|
|
PyPy 7.1.x
|
|
^^^^^^^^^^
|
|
|
|
Pillow has dropped support for PyPy3 7.1.1.
|
|
PyPy3 7.2.0, released on 2019-10-14, is now the minimum compatible version.
|
|
|
|
im.offset
|
|
^^^^^^^^^
|
|
|
|
``im.offset()`` has been removed, call :py:func:`.ImageChops.offset()` instead.
|
|
|
|
Image.fromstring, im.fromstring and im.tostring
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
* ``Image.fromstring()`` has been removed, call :py:func:`.Image.frombytes()` instead.
|
|
* ``im.fromstring()`` has been removed, call :py:meth:`~PIL.Image.Image.frombytes()` instead.
|
|
* ``im.tostring()`` has been removed, call :py:meth:`~PIL.Image.Image.tobytes()` instead.
|
|
|
|
ImageCms.CmsProfile attributes
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
Some attributes in :py:class:`PIL.ImageCms.core.CmsProfile` have been removed:
|
|
|
|
======================== ===================================================
|
|
Removed Use instead
|
|
======================== ===================================================
|
|
``color_space`` Padded :py:attr:`~.CmsProfile.xcolor_space`
|
|
``pcs`` Padded :py:attr:`~.CmsProfile.connection_space`
|
|
``product_copyright`` Unicode :py:attr:`~.CmsProfile.copyright`
|
|
``product_desc`` Unicode :py:attr:`~.CmsProfile.profile_description`
|
|
``product_description`` Unicode :py:attr:`~.CmsProfile.profile_description`
|
|
``product_manufacturer`` Unicode :py:attr:`~.CmsProfile.manufacturer`
|
|
``product_model`` Unicode :py:attr:`~.CmsProfile.model`
|
|
======================== ===================================================
|
|
|
|
API Changes
|
|
===========
|
|
|
|
ImageDraw.text: stroke_width
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
Fixed issue where passing ``stroke_width`` with a non-zero value
|
|
to :py:meth:`.ImageDraw.text` would cause the text to be offset by that amount.
|
|
|
|
ImageDraw.text: anchor
|
|
^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
The ``anchor`` parameter of :py:meth:`.ImageDraw.text` has been implemented.
|
|
|
|
Use this parameter to change the position of text relative to the
|
|
specified ``xy`` point. See :ref:`text-anchors` for details.
|
|
|
|
Add MIME type to PsdImagePlugin
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
"image/vnd.adobe.photoshop" is now registered as the
|
|
:py:class:`.PsdImagePlugin.PsdImageFile` MIME type.
|
|
|
|
API Additions
|
|
=============
|
|
|
|
Image.open: add formats parameter
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
Added a new ``formats`` parameter to :py:func:`.Image.open`:
|
|
|
|
* A list or tuple of formats to attempt to load the file in.
|
|
This can be used to restrict the set of formats checked.
|
|
Pass ``None`` to try all supported formats. You can print the set of
|
|
available formats by running ``python3 -m PIL`` or using
|
|
the :py:func:`PIL.features.pilinfo` function.
|
|
|
|
ImageOps.autocontrast: add mask parameter
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
:py:func:`.ImageOps.autocontrast` can now take a ``mask`` parameter:
|
|
|
|
* Histogram used in contrast operation is computed using pixels within the mask.
|
|
If no mask is given the entire image is used for histogram computation.
|
|
|
|
ImageOps.autocontrast cutoffs
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
Previously, the ``cutoff`` parameter of :py:func:`.ImageOps.autocontrast` could only
|
|
be a single number, used as the percent to cut off from the histogram on the low and
|
|
high ends.
|
|
|
|
Now, it can also be a tuple ``(low, high)``.
|
|
|
|
ImageDraw.regular_polygon
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
A new method :py:meth:`.ImageDraw.regular_polygon`, draws a regular polygon of ``n_sides``, inscribed in a ``bounding_circle``.
|
|
|
|
For example ``draw.regular_polygon(((100, 100), 50), 5)``
|
|
draws a pentagon centered at the point ``(100, 100)`` with a polygon radius of ``50``.
|
|
|
|
ImageDraw.text: embedded_color
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
The methods :py:meth:`.ImageDraw.text` and :py:meth:`.ImageDraw.multiline_text`
|
|
now support fonts with embedded color data.
|
|
|
|
To render text with embedded color data, use the parameter ``embedded_color=True``.
|
|
|
|
Support for CBDT fonts requires FreeType 2.5 compiled with libpng.
|
|
Support for SBIX fonts requires FreeType 2.5.1 compiled with libpng.
|
|
Support for COLR fonts requires FreeType 2.10.
|
|
SVG fonts are not yet supported.
|
|
|
|
ImageDraw.textlength
|
|
^^^^^^^^^^^^^^^^^^^^
|
|
|
|
Two new methods :py:meth:`.ImageDraw.textlength` and :py:meth:`.FreeTypeFont.getlength`
|
|
were added, returning the exact advance length of text with 1/64 pixel precision.
|
|
|
|
These can be used for word-wrapping or rendering text in parts.
|
|
|
|
ImageDraw.textbbox
|
|
^^^^^^^^^^^^^^^^^^
|
|
|
|
Three new methods :py:meth:`.ImageDraw.textbbox`, :py:meth:`.ImageDraw.multiline_textbbox`,
|
|
and :py:meth:`.FreeTypeFont.getbbox` return the bounding box of rendered text.
|
|
|
|
These functions accept an ``anchor`` parameter, see :ref:`text-anchors` for details.
|
|
|
|
Other Changes
|
|
=============
|
|
|
|
Improved ellipse-drawing algorithm
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
The ellipse-drawing algorithm has been changed from drawing a 360-sided polygon to one
|
|
which resembles Bresenham's algorithm for circles. It should be faster and produce
|
|
smoother curves, especially for smaller ellipses.
|
|
|
|
ImageDraw.text and ImageDraw.multiline_text
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
Fixed multiple issues in methods :py:meth:`.ImageDraw.text` and :py:meth:`.ImageDraw.multiline_text`
|
|
sometimes causing unexpected text alignment issues.
|
|
|
|
The ``align`` parameter of :py:meth:`.ImageDraw.multiline_text` now gives better results in some cases.
|
|
|
|
TrueType fonts with embedded bitmaps are now supported.
|
|
|
|
Added writing of subIFDs
|
|
^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
When saving EXIF data, Pillow is now able to write subIFDs, such as the GPS IFD. This
|
|
should happen automatically when saving an image using the EXIF data that it was opened
|
|
with, such as in :py:meth:`~PIL.ImageOps.exif_transpose`.
|
|
|
|
Previously, the code of the first tag of the subIFD was incorrectly written as the
|
|
offset.
|
|
|
|
Error for large BMP files
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
Previously, if a BMP file was too large, an :py:exc:`OSError` would be raised. Now,
|
|
``DecompressionBombError`` is used instead, as Pillow already uses for other formats.
|
|
|
|
Dark theme for docs
|
|
^^^^^^^^^^^^^^^^^^^
|
|
|
|
The https://pillow.readthedocs.io documentation will use a dark theme if the user has requested the system use one. Uses the ``prefers-color-scheme`` CSS media query.
|