Update release notes to match template for #7864

- Categorized previously uncategorized notes under ``Other Changes``
- TODO: Fix categorization of notes in ``Other Changes`` that belong in other categories
This commit is contained in:
Alex Clark 2024-03-14 20:21:00 -04:00
parent f316fd9c7a
commit 180f37b18e
19 changed files with 178 additions and 129 deletions

View File

@ -1,6 +1,19 @@
10.3.0
------
Security
========
TODO
^^^^
TODO
:cve:`YYYY-XXXXX`: TODO
^^^^^^^^^^^^^^^^^^^^^^^
TODO
Backwards Incompatible Changes
==============================
@ -63,14 +76,6 @@ Added PerspectiveTransform
that all of the :py:data:`~PIL.Image.Transform` values now have a corresponding
subclass of :py:class:`~PIL.ImageTransform.Transform`.
Security
========
TODO
^^^^
TODO
Other Changes
=============

View File

@ -1,15 +1,17 @@
2.7.0
=====
-----
Other Changes
=============
Sane Plugin
-----------
^^^^^^^^^^^
The Sane plugin has now been split into its own repo:
https://github.com/python-pillow/Sane .
Png text chunk size limits
--------------------------
^^^^^^^^^^^^^^^^^^^^^^^^^^
To prevent potential denial of service attacks using compressed text
chunks, there are now limits to the decompressed size of text chunks
@ -24,7 +26,7 @@ default. The total decompressed size of all text chunks is limited to
know that there are large text blocks that are desired.
Image resizing filters
----------------------
^^^^^^^^^^^^^^^^^^^^^^
Image resizing methods :py:meth:`~PIL.Image.Image.resize` and
:py:meth:`~PIL.Image.Image.thumbnail` take a ``resample`` argument, which tells
@ -33,7 +35,7 @@ which filter should be used for resampling. Possible values are:
were changed in this version.
Bicubic and bilinear downscaling
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
--------------------------------
From the beginning ``BILINEAR`` and ``BICUBIC`` filters were based on affine
transformations and used a fixed number of pixels from the source image for
@ -50,7 +52,7 @@ If you have previously used any tricks to maintain quality when downscaling with
steps), they are unnecessary now.
Antialias renamed to Lanczos
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
----------------------------
A new ``LANCZOS`` constant was added instead of ``ANTIALIAS``.
@ -64,19 +66,19 @@ The ``ANTIALIAS`` constant is left for backward compatibility and is an alias
for ``LANCZOS``.
Lanczos upscaling quality
^^^^^^^^^^^^^^^^^^^^^^^^^
-------------------------
The image upscaling quality with ``LANCZOS`` filter was almost the same as
``BILINEAR`` due to a bug. This has been fixed.
Bicubic upscaling quality
^^^^^^^^^^^^^^^^^^^^^^^^^
-------------------------
The ``BICUBIC`` filter for affine transformations produced sharp, slightly
pixelated image for upscaling. Bicubic for convolutions is more soft.
Resize performance
^^^^^^^^^^^^^^^^^^
------------------
In most cases, convolution is more a expensive algorithm for downscaling
because it takes into account all the pixels of source image. Therefore
@ -93,7 +95,7 @@ The upscaling performance of the ``LANCZOS`` filter has remained the same. For
times.
Default filter for thumbnails
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-----------------------------
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
@ -103,7 +105,7 @@ other filters gave poor quality for reduction. Starting from Pillow 2.7.0,
uses supersampling internally, not convolutions.
Image transposition
-------------------
^^^^^^^^^^^^^^^^^^^
A new method ``TRANSPOSE`` has been added for the
:py:meth:`~PIL.Image.Image.transpose` operation in addition to
@ -115,7 +117,7 @@ The speed of ``ROTATE_90``, ``ROTATE_270`` and ``TRANSPOSE`` has been significan
improved for large images which don't fit in the processor cache.
Gaussian blur and unsharp mask
------------------------------
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The :py:meth:`~PIL.ImageFilter.GaussianBlur` implementation has been replaced
with a sequential application of box filters. The new implementation is based on
@ -125,7 +127,7 @@ implementations use Gaussian blur internally, all changes from this chapter
are also applicable to it.
Blur radius
^^^^^^^^^^^
-----------
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
@ -136,7 +138,7 @@ If you used a Gaussian blur with some radius value, you need to divide this
value by two.
Blur performance
^^^^^^^^^^^^^^^^
----------------
Box filter computation time is constant relative to the radius and depends
on source image size only. Because the new Gaussian blur implementation
@ -148,7 +150,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.
Blur quality
^^^^^^^^^^^^
------------
The previous implementation takes into account only source pixels within
2 * standard deviation radius for every destination pixel. This was not enough,
@ -157,7 +159,7 @@ so the quality was worse compared to other Gaussian blur software.
The new implementation does not have this drawback.
TIFF Parameter Changes
----------------------
^^^^^^^^^^^^^^^^^^^^^^
Several kwarg parameters for saving TIFF images were previously
specified as strings with included spaces (e.g. 'x resolution'). This

View File

@ -1,8 +1,11 @@
2.8.0
=====
-----
Other Changes
=============
Open HTTP response objects with Image.open
------------------------------------------
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
HTTP response objects returned from ``urllib2.urlopen(url)`` or
``requests.get(url, stream=True).raw`` are 'file-like' but do not support ``.seek()``

View File

@ -1,32 +1,8 @@
3.0.0
=====
-----
Saving Multipage Images
-----------------------
There is now support for saving multipage images in the ``GIF`` and
``PDF`` formats. To enable this functionality, pass in ``save_all=True``
as a keyword argument to the save::
im.save('test.pdf', save_all=True)
Tiff ImageFileDirectory Rewrite
-------------------------------
The Tiff ImageFileDirectory metadata code has been rewritten. Where
previously it returned a somewhat arbitrary set of values and tuples,
it now returns bare values where appropriate and tuples when the
metadata item is a sequence or collection.
The original metadata is still available in the TiffImage.tags, the
new values are available in the TiffImage.tags_v2 member. The old
structures will be deprecated at some point in the future. When
saving Tiff metadata, new code should use the
TiffImagePlugin.ImageFileDirectory_v2 class.
Deprecated Methods
------------------
Deprecations
============
Several methods that have been marked as deprecated for many releases
have been removed in this release::
@ -42,8 +18,34 @@ have been removed in this release::
ImageWin.fromstring()
ImageWin.tostring()
LibJpeg and Zlib are Required by Default
----------------------------------------
Other Changes
=============
Saving Multipage Images
^^^^^^^^^^^^^^^^^^^^^^^
There is now support for saving multipage images in the ``GIF`` and
``PDF`` formats. To enable this functionality, pass in ``save_all=True``
as a keyword argument to the save::
im.save('test.pdf', save_all=True)
Tiff ImageFileDirectory Rewrite
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The Tiff ImageFileDirectory metadata code has been rewritten. Where
previously it returned a somewhat arbitrary set of values and tuples,
it now returns bare values where appropriate and tuples when the
metadata item is a sequence or collection.
The original metadata is still available in the TiffImage.tags, the
new values are available in the TiffImage.tags_v2 member. The old
structures will be deprecated at some point in the future. When
saving Tiff metadata, new code should use the
TiffImagePlugin.ImageFileDirectory_v2 class.
LibJpeg and Zlib are required by default
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The external dependencies on libjpeg and zlib are now required by default.
If the headers or libraries are not found, then installation will abort

View File

@ -1,9 +1,11 @@
3.1.0
=====
-----
Other Changes
=============
ImageDraw arc, chord and pieslice can now use floats
----------------------------------------------------
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
There is no longer a need to ensure that the start and end arguments for ``arc``,
``chord`` and ``pieslice`` are integers.
@ -12,7 +14,7 @@ Note that these numbers are not simply rounded internally, but are actually
utilised in the drawing process.
Consistent multiline text spacing
---------------------------------
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
When using the ``ImageDraw`` multiline methods, the spacing between
lines was inconsistent, based on the combination on ascenders and
@ -24,7 +26,7 @@ not the absolute height of each line.
There is also now a default spacing of 4px between lines.
Exif, Jpeg and Tiff Metadata
----------------------------
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
There were major changes in the TIFF ImageFileDirectory support in
Pillow 3.0 that led to a number of regressions. Some of them have been
@ -32,7 +34,7 @@ fixed in Pillow 3.1, and some of them have been extended to have
different behavior.
TiffImagePlugin.IFDRational
+++++++++++++++++++++++++++
---------------------------
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
@ -50,7 +52,7 @@ This class should be used when adding a rational value to an
ImageFileDirectory for saving to image metadata.
JpegImagePlugin._getexif
++++++++++++++++++++++++
------------------------
In Pillow 3.0, the dictionary returned from the private, experimental,
but generally widely used ``_getexif`` function changed to reflect the
@ -65,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.
Out of Spec Metadata
++++++++++++++++++++
--------------------
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

View File

@ -1,9 +1,11 @@
3.2.0
-----
Other Changes
=============
New DDS and FTEX Image Plugins
==============================
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The ``DdsImagePlugin`` reading DXT1 and DXT5 encoded ``.dds`` images was
added. DXT3 images are not currently supported.
@ -14,7 +16,7 @@ per file, in the ``.ftc`` (compressed) and ``.ftu`` (uncompressed)
formats.
Updates to the GbrImagePlugin
=============================
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The ``GbrImagePlugin`` (GIMP brush format) has been updated to fix
support for version 1 files and add support for version 2 files.

View File

@ -1,8 +1,11 @@
3.3.0
-----
Other Changes
=============
Libimagequant support
=====================
^^^^^^^^^^^^^^^^^^^^^
There is now support for using libimagequant as a higher quality
quantization option in ``Image.quantize()`` on Unix-like
@ -12,7 +15,7 @@ differences.
New Setup.py options
====================
^^^^^^^^^^^^^^^^^^^^
There are two new options to control the ``build_ext`` task in ``setup.py``:
@ -24,9 +27,8 @@ There are two new options to control the ``build_ext`` task in ``setup.py``:
cross compilers that specify that information in via environment
variables.
Resizing
========
^^^^^^^^
Image resampling for 8-bit per channel images was rewritten using only integer
computings. This is faster on most platforms and doesn't introduce precision
@ -36,18 +38,16 @@ makes resampling 60% faster on average.
Color calculation for images in the ``LA`` mode on semitransparent pixels
was fixed.
Rotation
========
^^^^^^^^
Rotation for angles divisible by 90 degrees now always uses transposition.
This greatly improves both quality and performance in this case.
Also, the bug with wrong image size calculation when rotating by 90 degrees
was fixed.
Image Metadata
==============
^^^^^^^^^^^^^^
The return type for binary data in version 2 Exif and Tiff metadata
has been changed from a tuple of integers to bytes. This is a change

View File

@ -1,9 +1,11 @@
3.3.2
=====
-----
Security
========
Integer overflow in Map.c
-------------------------
^^^^^^^^^^^^^^^^^^^^^^^^^
Pillow prior to 3.3.2 may experience integer overflow errors in map.c
when reading specially crafted image files. This may lead to memory
@ -26,7 +28,7 @@ memory without duplicating the image first.
This issue was found by Cris Neckar at Divergent Security.
Sign Extension in Storage.c
---------------------------
^^^^^^^^^^^^^^^^^^^^^^^^^^^
Pillow prior to 3.3.2 and PIL 1.1.7 (at least) do not check for
negative image sizes in ``ImagingNew`` in ``Storage.c``. A negative

View File

@ -1,9 +1,29 @@
3.4.0
-----
Deprecations
============
Deprecation Warning when Saving JPEGs
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
JPEG images cannot contain an alpha channel. Pillow prior to 3.4.0
silently drops the alpha channel. With this release Pillow will now
issue a :py:exc:`DeprecationWarning` when attempting to save a ``RGBA`` mode
image as a JPEG. This will become an error in Pillow 4.2.
Image.core.open_ppm removed
^^^^^^^^^^^^^^^^^^^^^^^^^^^
The nominally private/debugging function ``Image.core.open_ppm`` has
been removed. If you were using this function, please use
``Image.open`` instead.
Other changes
=============
New resizing filters
====================
^^^^^^^^^^^^^^^^^^^^
Two new filters available for ``Image.resize()`` and ``Image.thumbnail()``
functions: ``BOX`` and ``HAMMING``. ``BOX`` is the high-performance filter with
@ -14,23 +34,15 @@ two times shorter window than ``BILINEAR``. It can be used for image reduction
providing the image downscaling quality comparable to ``BICUBIC``.
Both new filters don't show good quality for the image upscaling.
Deprecation Warning when Saving JPEGs
=====================================
JPEG images cannot contain an alpha channel. Pillow prior to 3.4.0
silently drops the alpha channel. With this release Pillow will now
issue a :py:exc:`DeprecationWarning` when attempting to save a ``RGBA`` mode
image as a JPEG. This will become an error in Pillow 4.2.
New DDS Decoders
================
^^^^^^^^^^^^^^^^
Pillow can now decode DXT3 images, as well as the previously supported
DXT1 and DXT5 formats. All three formats are now decoded in C code for
better performance.
Append images to GIF
====================
^^^^^^^^^^^^^^^^^^^^
Additional frames can now be appended when saving a GIF file, through the
``append_images`` argument. The new frames are passed in as a list of images,
@ -42,16 +54,9 @@ in effect, e.g.::
im.save(out, save_all=True, append_images=[im1, im2, ...])
Save multiple frame TIFF
========================
^^^^^^^^^^^^^^^^^^^^^^^^
Multiple frames can now be saved in a TIFF file by using the ``save_all`` option.
e.g.::
im.save("filename.tiff", format="TIFF", save_all=True)
Image.core.open_ppm removed
===========================
The nominally private/debugging function ``Image.core.open_ppm`` has
been removed. If you were using this function, please use
``Image.open`` instead.

View File

@ -1,6 +1,9 @@
4.0.0
-----
Other Changes
=============
Python 2.6 and 3.2 Dropped
==========================

View File

@ -1,8 +1,8 @@
4.1.0
-----
Removed Deprecated Items
========================
Deprecations
============
Several deprecated items have been removed.
@ -15,8 +15,11 @@ Several deprecated items have been removed.
``PIL.ImageDraw.ImageDraw.setfont`` have been removed.
Other Changes
=============
Closing Files When Opening Images
=================================
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The file handling when opening images has been overhauled. Previously,
Pillow would attempt to close some, but not all image formats
@ -38,9 +41,8 @@ is specified:
the underlying file until we are done with the image. The mapping
will be closed in the ``close`` or ``__del__`` method.
Changes to GIF Handling When Saving
===================================
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The :py:class:`PIL.GifImagePlugin` code has been refactored to fix the flow when
saving images. There are two external changes that arise from this:

View File

@ -1,8 +1,11 @@
4.1.1
-----
Other Changes
=============
Fix Regression with reading DPI from EXIF data
==============================================
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Some JPEG images don't contain DPI information in the image metadata,
but do contain it in the EXIF data. A patch was added in 4.1.0 to read
@ -10,9 +13,8 @@ from the EXIF data, but it did not accept all possible types that
could be included there. This fix adds the ability to read ints as
well as rational values.
Incompatibility between 3.6.0 and 3.6.1
=======================================
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
CPython 3.6.1 added a new symbol, PySlice_GetIndicesEx, which was not
present in 3.6.0. This had the effect of causing binaries compiled on

View File

@ -1,8 +1,11 @@
4.2.0
-----
Other Changes
=============
Added Complex Text Rendering
============================
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Pillow now supports complex text rendering for scripts requiring glyph
composition and bidirectional flow. This optional feature adds three
@ -11,7 +14,7 @@ dependencies: harfbuzz, fribidi, and raqm. See the :doc:`install documentation
Unix and Mac, but has not yet been built on Windows platforms.
New Optional Parameters
=======================
^^^^^^^^^^^^^^^^^^^^^^^
* :py:meth:`PIL.ImageDraw.floodfill` has a new optional parameter:
threshold. This specifies a tolerance for the color to replace with
@ -22,16 +25,17 @@ New Optional Parameters
multipage outputs.
New DecompressionBomb Warning
=============================
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
:py:meth:`PIL.Image.Image.crop` now may raise a DecompressionBomb
warning if the crop region enlarges the image over the threshold
specified by :py:data:`PIL.Image.MAX_IMAGE_PIXELS`.
Removed Deprecated Items
========================
Deprections
===========
Several deprecated items have been removed.
Several deprecated items have been removed
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* The methods ``PIL.ImageWin.Dib.fromstring``,
``PIL.ImageWin.Dib.tostring`` and
@ -44,7 +48,7 @@ Several deprecated items have been removed.
an :py:exc:`IOError` is raised.
Removed Core Image Function
===========================
^^^^^^^^^^^^^^^^^^^^^^^^^^^
The unused function ``Image.core.new_array`` was removed. This is an
internal function that should not have been used by user code, but it

View File

@ -3,8 +3,11 @@
There are no functional changes in this release.
Other Changes
=============
Fixed Windows PyPy Build
========================
^^^^^^^^^^^^^^^^^^^^^^^^
A change in the 4.2.0 cycle broke the Windows PyPy build. This has
been fixed, and PyPy is now part of the Windows CI matrix.

View File

@ -1,15 +1,23 @@
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
===========
@ -26,11 +34,3 @@ Append to PDF Files
Images can now be appended to PDF files in place by passing in
``append=True`` when saving the image.
Other Changes
=============
WebP memory leak
^^^^^^^^^^^^^^^^
A memory leak when opening ``WebP`` files has been fixed.

View File

@ -3,6 +3,9 @@
This release fixes regressions in 5.4.0.
Other Changes
=============
Installation on Termux
^^^^^^^^^^^^^^^^^^^^^^

View File

@ -1,8 +1,11 @@
7.1.1
-----
Other Changes
=============
Fix regression seeking PNG files
================================
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This fixes a regression introduced in 7.1.0 when adding support for APNG files when calling
``seek`` and ``tell``:

View File

@ -1,8 +1,11 @@
7.1.2
-----
Other Changes
=============
Fix another regression seeking PNG files
========================================
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This fixes a regression introduced in 7.1.0 when adding support for APNG files.

View File

@ -1,8 +1,11 @@
8.3.1
-----
Other Changes
=============
Fixed regression converting to NumPy arrays
===========================================
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This fixes a regression introduced in 8.3.0 when converting an image to a NumPy array
with a ``dtype`` argument.
@ -28,7 +31,7 @@ access.
The :py:exc:`OSError` is now silently caught.
Fixed removing orientation in ImageOps.exif_transpose
=====================================================
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
In 8.3.0, :py:meth:`~PIL.ImageOps.exif_transpose` was changed to ensure that the
original image EXIF data was not modified, and the orientation was only removed from