mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-02-28 18:10:33 +03:00
Update release notes to match template for #7864
This commit is contained in:
parent
180f37b18e
commit
b5f77799ca
|
@ -11,7 +11,10 @@ This release provides an updated install script and updated wheels to
|
||||||
include libwebp 1.3.2, preventing a potential heap buffer overflow in
|
include libwebp 1.3.2, preventing a potential heap buffer overflow in
|
||||||
WebP.
|
WebP.
|
||||||
|
|
||||||
|
Other Changes
|
||||||
|
=============
|
||||||
|
|
||||||
Updated tests to pass with latest zlib version
|
Updated tests to pass with latest zlib version
|
||||||
==============================================
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
The release of zlib 1.3 caused one of the tests in the Pillow test suite to fail.
|
The release of zlib 1.3 caused one of the tests in the Pillow test suite to fail.
|
||||||
|
|
|
@ -90,3 +90,8 @@ Release GIL when fetching WebP frames
|
||||||
|
|
||||||
Python's Global Interpreter Lock is now released when fetching WebP frames from
|
Python's Global Interpreter Lock is now released when fetching WebP frames from
|
||||||
the libwebp decoder.
|
the libwebp decoder.
|
||||||
|
|
||||||
|
Add release notes for 2.3.1, 2.3.2, 2.5.2
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|
|
@ -35,7 +35,7 @@ which filter should be used for resampling. Possible values are:
|
||||||
were changed in this version.
|
were changed in this version.
|
||||||
|
|
||||||
Bicubic and bilinear downscaling
|
Bicubic and bilinear downscaling
|
||||||
--------------------------------
|
++++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
From the beginning ``BILINEAR`` and ``BICUBIC`` filters were based on affine
|
From the beginning ``BILINEAR`` and ``BICUBIC`` filters were based on affine
|
||||||
transformations and used a fixed number of pixels from the source image for
|
transformations and used a fixed number of pixels from the source image for
|
||||||
|
@ -52,7 +52,7 @@ If you have previously used any tricks to maintain quality when downscaling with
|
||||||
steps), they are unnecessary now.
|
steps), they are unnecessary now.
|
||||||
|
|
||||||
Antialias renamed to Lanczos
|
Antialias renamed to Lanczos
|
||||||
----------------------------
|
++++++++++++++++++++++++++++
|
||||||
|
|
||||||
A new ``LANCZOS`` constant was added instead of ``ANTIALIAS``.
|
A new ``LANCZOS`` constant was added instead of ``ANTIALIAS``.
|
||||||
|
|
||||||
|
@ -66,19 +66,19 @@ The ``ANTIALIAS`` constant is left for backward compatibility and is an alias
|
||||||
for ``LANCZOS``.
|
for ``LANCZOS``.
|
||||||
|
|
||||||
Lanczos upscaling quality
|
Lanczos upscaling quality
|
||||||
-------------------------
|
+++++++++++++++++++++++++
|
||||||
|
|
||||||
The image upscaling quality with ``LANCZOS`` filter was almost the same as
|
The image upscaling quality with ``LANCZOS`` filter was almost the same as
|
||||||
``BILINEAR`` due to a bug. This has been fixed.
|
``BILINEAR`` due to a bug. This has been fixed.
|
||||||
|
|
||||||
Bicubic upscaling quality
|
Bicubic upscaling quality
|
||||||
-------------------------
|
+++++++++++++++++++++++++
|
||||||
|
|
||||||
The ``BICUBIC`` filter for affine transformations produced sharp, slightly
|
The ``BICUBIC`` filter for affine transformations produced sharp, slightly
|
||||||
pixelated image for upscaling. Bicubic for convolutions is more soft.
|
pixelated image for upscaling. Bicubic for convolutions is more soft.
|
||||||
|
|
||||||
Resize performance
|
Resize performance
|
||||||
------------------
|
++++++++++++++++++
|
||||||
|
|
||||||
In most cases, convolution is more a expensive algorithm for downscaling
|
In most cases, convolution is more a expensive algorithm for downscaling
|
||||||
because it takes into account all the pixels of source image. Therefore
|
because it takes into account all the pixels of source image. Therefore
|
||||||
|
@ -95,7 +95,7 @@ The upscaling performance of the ``LANCZOS`` filter has remained the same. For
|
||||||
times.
|
times.
|
||||||
|
|
||||||
Default filter for thumbnails
|
Default filter for thumbnails
|
||||||
-----------------------------
|
+++++++++++++++++++++++++++++
|
||||||
|
|
||||||
In Pillow 2.5 the default filter for :py:meth:`~PIL.Image.Image.thumbnail` was
|
In Pillow 2.5 the default filter for :py:meth:`~PIL.Image.Image.thumbnail` was
|
||||||
changed from ``NEAREST`` to ``ANTIALIAS``. Antialias was chosen because all the
|
changed from ``NEAREST`` to ``ANTIALIAS``. Antialias was chosen because all the
|
||||||
|
@ -105,7 +105,6 @@ other filters gave poor quality for reduction. Starting from Pillow 2.7.0,
|
||||||
uses supersampling internally, not convolutions.
|
uses supersampling internally, not convolutions.
|
||||||
|
|
||||||
Image transposition
|
Image transposition
|
||||||
^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
A new method ``TRANSPOSE`` has been added for the
|
A new method ``TRANSPOSE`` has been added for the
|
||||||
:py:meth:`~PIL.Image.Image.transpose` operation in addition to
|
:py:meth:`~PIL.Image.Image.transpose` operation in addition to
|
||||||
|
@ -127,7 +126,7 @@ implementations use Gaussian blur internally, all changes from this chapter
|
||||||
are also applicable to it.
|
are also applicable to it.
|
||||||
|
|
||||||
Blur radius
|
Blur radius
|
||||||
-----------
|
+++++++++++
|
||||||
|
|
||||||
There was an error in the previous version of Pillow, where blur radius (the
|
There was an error in the previous version of Pillow, where blur radius (the
|
||||||
standard deviation of Gaussian) actually meant blur diameter. For example, to
|
standard deviation of Gaussian) actually meant blur diameter. For example, to
|
||||||
|
@ -138,7 +137,7 @@ If you used a Gaussian blur with some radius value, you need to divide this
|
||||||
value by two.
|
value by two.
|
||||||
|
|
||||||
Blur performance
|
Blur performance
|
||||||
----------------
|
++++++++++++++++
|
||||||
|
|
||||||
Box filter computation time is constant relative to the radius and depends
|
Box filter computation time is constant relative to the radius and depends
|
||||||
on source image size only. Because the new Gaussian blur implementation
|
on source image size only. Because the new Gaussian blur implementation
|
||||||
|
@ -150,7 +149,7 @@ second for radius 1, 3.6 seconds for radius 10 and 17 seconds for 50, now blur
|
||||||
with any radius on same image is executed for 0.2 seconds.
|
with any radius on same image is executed for 0.2 seconds.
|
||||||
|
|
||||||
Blur quality
|
Blur quality
|
||||||
------------
|
++++++++++++
|
||||||
|
|
||||||
The previous implementation takes into account only source pixels within
|
The previous implementation takes into account only source pixels within
|
||||||
2 * standard deviation radius for every destination pixel. This was not enough,
|
2 * standard deviation radius for every destination pixel. This was not enough,
|
||||||
|
|
|
@ -34,7 +34,7 @@ fixed in Pillow 3.1, and some of them have been extended to have
|
||||||
different behavior.
|
different behavior.
|
||||||
|
|
||||||
TiffImagePlugin.IFDRational
|
TiffImagePlugin.IFDRational
|
||||||
---------------------------
|
+++++++++++++++++++++++++++
|
||||||
|
|
||||||
Pillow 3.0 changed rational metadata to use a float. In Pillow 3.1,
|
Pillow 3.0 changed rational metadata to use a float. In Pillow 3.1,
|
||||||
this has changed to allow the expression of 0/0 as a valid piece of
|
this has changed to allow the expression of 0/0 as a valid piece of
|
||||||
|
@ -52,7 +52,7 @@ This class should be used when adding a rational value to an
|
||||||
ImageFileDirectory for saving to image metadata.
|
ImageFileDirectory for saving to image metadata.
|
||||||
|
|
||||||
JpegImagePlugin._getexif
|
JpegImagePlugin._getexif
|
||||||
------------------------
|
++++++++++++++++++++++++
|
||||||
|
|
||||||
In Pillow 3.0, the dictionary returned from the private, experimental,
|
In Pillow 3.0, the dictionary returned from the private, experimental,
|
||||||
but generally widely used ``_getexif`` function changed to reflect the
|
but generally widely used ``_getexif`` function changed to reflect the
|
||||||
|
@ -67,7 +67,7 @@ The format returned by Pillow 3.0 has been abandoned. A more fully
|
||||||
featured interface for EXIF is anticipated in a future release.
|
featured interface for EXIF is anticipated in a future release.
|
||||||
|
|
||||||
Out of Spec Metadata
|
Out of Spec Metadata
|
||||||
--------------------
|
++++++++++++++++++++
|
||||||
|
|
||||||
In Pillow 3.0 and 3.1, images that contain metadata that is internally
|
In Pillow 3.0 and 3.1, images that contain metadata that is internally
|
||||||
consistent, but not in agreement with the TIFF spec, may cause an
|
consistent, but not in agreement with the TIFF spec, may cause an
|
||||||
|
|
|
@ -22,7 +22,7 @@ The ``GbrImagePlugin`` (GIMP brush format) has been updated to fix
|
||||||
support for version 1 files and add support for version 2 files.
|
support for version 1 files and add support for version 2 files.
|
||||||
|
|
||||||
Passthrough Parameters for ImageDraw.text
|
Passthrough Parameters for ImageDraw.text
|
||||||
=========================================
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
``ImageDraw.multiline_text`` and ``ImageDraw.multiline_size`` take extra
|
``ImageDraw.multiline_text`` and ``ImageDraw.multiline_size`` take extra
|
||||||
spacing parameters above what are used in ``ImageDraw.text`` and
|
spacing parameters above what are used in ``ImageDraw.text`` and
|
||||||
|
@ -31,7 +31,7 @@ spacing parameters above what are used in ``ImageDraw.text`` and
|
||||||
to the corresponding multiline functions.
|
to the corresponding multiline functions.
|
||||||
|
|
||||||
ImageSequence.Iterator changes
|
ImageSequence.Iterator changes
|
||||||
==============================
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
``ImageSequence.Iterator`` is now an actual iterator implementing the
|
``ImageSequence.Iterator`` is now an actual iterator implementing the
|
||||||
Iterator protocol. It is also now possible to seek to the first image
|
Iterator protocol. It is also now possible to seek to the first image
|
||||||
|
|
|
@ -5,7 +5,7 @@ Other Changes
|
||||||
=============
|
=============
|
||||||
|
|
||||||
Python 2.6 and 3.2 Dropped
|
Python 2.6 and 3.2 Dropped
|
||||||
==========================
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Pillow 4.0 no longer supports Python 2.6 and 3.2. We will not be
|
Pillow 4.0 no longer supports Python 2.6 and 3.2. We will not be
|
||||||
creating binaries, testing, or retaining compatibility with these
|
creating binaries, testing, or retaining compatibility with these
|
||||||
|
@ -13,12 +13,12 @@ releases. This release removes some workarounds for those Python
|
||||||
releases, so the final working version of Pillow on 2.6 or 3.2 is 3.4.2.
|
releases, so the final working version of Pillow on 2.6 or 3.2 is 3.4.2.
|
||||||
|
|
||||||
Support added for Python 3.6
|
Support added for Python 3.6
|
||||||
============================
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Pillow 4.0 supports Python 3.6.
|
Pillow 4.0 supports Python 3.6.
|
||||||
|
|
||||||
OleFileIO.py
|
OleFileIO.py
|
||||||
============
|
^^^^^^^^^^^^
|
||||||
|
|
||||||
``OleFileIO.py`` has been removed as a vendored file and is now installed
|
``OleFileIO.py`` has been removed as a vendored file and is now installed
|
||||||
from the upstream :pypi:`olefile` PyPI package. All internal dependencies are
|
from the upstream :pypi:`olefile` PyPI package. All internal dependencies are
|
||||||
|
@ -27,19 +27,19 @@ redirected to the olefile package. Direct accesses to
|
||||||
upstream olefile into ``sys.modules`` in its place.
|
upstream olefile into ``sys.modules`` in its place.
|
||||||
|
|
||||||
SGI image save
|
SGI image save
|
||||||
==============
|
^^^^^^^^^^^^^^
|
||||||
|
|
||||||
It is now possible to save images in modes ``L``, ``RGB``, and
|
It is now possible to save images in modes ``L``, ``RGB``, and
|
||||||
``RGBA`` to the uncompressed SGI image format.
|
``RGBA`` to the uncompressed SGI image format.
|
||||||
|
|
||||||
Zero sized images
|
Zero sized images
|
||||||
=================
|
^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Pillow 3.4.0 removed support for creating images with (0,0) size. This
|
Pillow 3.4.0 removed support for creating images with (0,0) size. This
|
||||||
has been reenabled, restoring pre 3.4 behavior.
|
has been reenabled, restoring pre 3.4 behavior.
|
||||||
|
|
||||||
Internal handles_eof flag
|
Internal handles_eof flag
|
||||||
=========================
|
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
The ``handles_eof flag`` for decoding images has been removed, as there
|
The ``handles_eof flag`` for decoding images has been removed, as there
|
||||||
were no internal users of the flag. Anyone maintaining image decoders
|
were no internal users of the flag. Anyone maintaining image decoders
|
||||||
|
@ -47,7 +47,7 @@ outside of the Pillow source tree should consider using the cleanup
|
||||||
function pointers instead.
|
function pointers instead.
|
||||||
|
|
||||||
Image.core.stretch removed
|
Image.core.stretch removed
|
||||||
==========================
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
The stretch function on the core image object has been removed. This
|
The stretch function on the core image object has been removed. This
|
||||||
used to be for enlarging the image, but has been aliased to resize
|
used to be for enlarging the image, but has been aliased to resize
|
||||||
|
|
|
@ -58,14 +58,14 @@ This refactor fixed some bugs with palette handling when saving
|
||||||
multiple frame GIFs.
|
multiple frame GIFs.
|
||||||
|
|
||||||
New Method: Image.remap_palette
|
New Method: Image.remap_palette
|
||||||
===============================
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
The method :py:meth:`PIL.Image.Image.remap_palette()` has been
|
The method :py:meth:`PIL.Image.Image.remap_palette()` has been
|
||||||
added. This method was hoisted from the GifImagePlugin code used to
|
added. This method was hoisted from the GifImagePlugin code used to
|
||||||
optimize the palette.
|
optimize the palette.
|
||||||
|
|
||||||
Added Decoder Registry and Support for Python Based Decoders
|
Added Decoder Registry and Support for Python Based Decoders
|
||||||
============================================================
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
There is now a decoder registry similar to the image plugin
|
There is now a decoder registry similar to the image plugin
|
||||||
registries. Image plugins can register a decoder, and it will be
|
registries. Image plugins can register a decoder, and it will be
|
||||||
|
@ -75,7 +75,7 @@ their C based counterparts, they may be easier and quicker to develop
|
||||||
or safer to run.
|
or safer to run.
|
||||||
|
|
||||||
Tests
|
Tests
|
||||||
=====
|
^^^^^
|
||||||
|
|
||||||
Many tests have been added, including correctness tests for image
|
Many tests have been added, including correctness tests for image
|
||||||
formats that have been previously untested.
|
formats that have been previously untested.
|
||||||
|
|
|
@ -1,23 +1,6 @@
|
||||||
5.1.0
|
5.1.0
|
||||||
-----
|
-----
|
||||||
|
|
||||||
Other Changes
|
|
||||||
=============
|
|
||||||
|
|
||||||
New File Format
|
|
||||||
^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
BLP File Format
|
|
||||||
---------------
|
|
||||||
|
|
||||||
Pillow now supports reading the BLP "Blizzard Mipmap" file format used
|
|
||||||
for tiles in Blizzard's engine.
|
|
||||||
|
|
||||||
WebP memory leak
|
|
||||||
^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
A memory leak when opening ``WebP`` files has been fixed.
|
|
||||||
|
|
||||||
API Changes
|
API Changes
|
||||||
===========
|
===========
|
||||||
|
|
||||||
|
@ -34,3 +17,17 @@ Append to PDF Files
|
||||||
|
|
||||||
Images can now be appended to PDF files in place by passing in
|
Images can now be appended to PDF files in place by passing in
|
||||||
``append=True`` when saving the image.
|
``append=True`` when saving the image.
|
||||||
|
|
||||||
|
Other Changes
|
||||||
|
=============
|
||||||
|
|
||||||
|
New BLP File Format
|
||||||
|
^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Pillow now supports reading the BLP "Blizzard Mipmap" file format used
|
||||||
|
for tiles in Blizzard's engine.
|
||||||
|
|
||||||
|
WebP memory leak
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
A memory leak when opening ``WebP`` files has been fixed.
|
||||||
|
|
|
@ -13,23 +13,8 @@ If an FPX image reports that it has a large number of bands, a large amount of
|
||||||
resources will be used when trying to process the image. This is fixed by
|
resources will be used when trying to process the image. This is fixed by
|
||||||
limiting the number of bands to those usable by Pillow.
|
limiting the number of bands to those usable by Pillow.
|
||||||
|
|
||||||
:cve:`2020-5310`: Overflow checks added to TIFF image processing
|
:cve:`2020-5310`, :cve:`2020-5311`, :cve:`2020-5312`, :cve:`2020-5313`: Overflow checks added
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Overflow checks have been added when calculating the size of a memory block to be reallocated
|
Overflow checks have been added when calculating the size of a memory block to be reallocated
|
||||||
in the processing of a TIFF image.
|
in the processing of TIFF, SGI, PCX and FLI images.
|
||||||
|
|
||||||
:cve:`2020-5311`: Overflow checks added to SGI image processing
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Buffer overruns were found when processing an SGI image. Checks have been added to prevent this.
|
|
||||||
|
|
||||||
:cve:`2020-5312`: Overflow checks added to PCX image processing
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Buffer overruns were found when processing a PCX image. Checks have been added to prevent this.
|
|
||||||
|
|
||||||
:cve:`2020-5313`: Overflow checks added to FLI image processing
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Buffer overruns were found when processing an FLI image. Checks have been added to prevent this.
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ with a ``dtype`` argument.
|
||||||
>>>
|
>>>
|
||||||
|
|
||||||
Catch OSError when checking if destination is sys.stdout
|
Catch OSError when checking if destination is sys.stdout
|
||||||
========================================================
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
In 8.3.0, a check to see if the destination was ``sys.stdout`` when saving an image was
|
In 8.3.0, a check to see if the destination was ``sys.stdout`` when saving an image was
|
||||||
updated. This lead to an :py:exc:`OSError` being raised if the environment restricted
|
updated. This lead to an :py:exc:`OSError` being raised if the environment restricted
|
||||||
|
|
|
@ -1,6 +1,25 @@
|
||||||
9.4.0
|
9.4.0
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
Security
|
||||||
|
========
|
||||||
|
|
||||||
|
Fix memory DOS in ImageFont
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
A corrupt or specially crafted TTF font could have font metrics that lead to
|
||||||
|
unreasonably large sizes when rendering text in font. ``ImageFont.py`` did not
|
||||||
|
check the image size before allocating memory for it. This dates to the PIL
|
||||||
|
fork. Pillow 8.2.0 added a check for large sizes, but did not consider the
|
||||||
|
case where one dimension is zero.
|
||||||
|
|
||||||
|
Null pointer dereference crash in ImageFont
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Pillow attempted to dereference a null pointer in ``ImageFont``, leading to a
|
||||||
|
crash. An error is now raised instead. This has been present since
|
||||||
|
Pillow 8.0.0.
|
||||||
|
|
||||||
API Additions
|
API Additions
|
||||||
=============
|
=============
|
||||||
|
|
||||||
|
@ -69,25 +88,6 @@ When saving a JPEG image, a comment can now be written from
|
||||||
|
|
||||||
im.save(out, comment="Test comment")
|
im.save(out, comment="Test comment")
|
||||||
|
|
||||||
Security
|
|
||||||
========
|
|
||||||
|
|
||||||
Fix memory DOS in ImageFont
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
A corrupt or specially crafted TTF font could have font metrics that lead to
|
|
||||||
unreasonably large sizes when rendering text in font. ``ImageFont.py`` did not
|
|
||||||
check the image size before allocating memory for it. This dates to the PIL
|
|
||||||
fork. Pillow 8.2.0 added a check for large sizes, but did not consider the
|
|
||||||
case where one dimension is zero.
|
|
||||||
|
|
||||||
Null pointer dereference crash in ImageFont
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Pillow attempted to dereference a null pointer in ``ImageFont``, leading to a
|
|
||||||
crash. An error is now raised instead. This has been present since
|
|
||||||
Pillow 8.0.0.
|
|
||||||
|
|
||||||
Other Changes
|
Other Changes
|
||||||
=============
|
=============
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user