mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-26 01:46:18 +03:00
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:
parent
f316fd9c7a
commit
180f37b18e
|
@ -1,6 +1,19 @@
|
||||||
10.3.0
|
10.3.0
|
||||||
------
|
------
|
||||||
|
|
||||||
|
Security
|
||||||
|
========
|
||||||
|
|
||||||
|
TODO
|
||||||
|
^^^^
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|
||||||
|
:cve:`YYYY-XXXXX`: TODO
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|
||||||
Backwards Incompatible Changes
|
Backwards Incompatible Changes
|
||||||
==============================
|
==============================
|
||||||
|
|
||||||
|
@ -63,14 +76,6 @@ Added PerspectiveTransform
|
||||||
that all of the :py:data:`~PIL.Image.Transform` values now have a corresponding
|
that all of the :py:data:`~PIL.Image.Transform` values now have a corresponding
|
||||||
subclass of :py:class:`~PIL.ImageTransform.Transform`.
|
subclass of :py:class:`~PIL.ImageTransform.Transform`.
|
||||||
|
|
||||||
Security
|
|
||||||
========
|
|
||||||
|
|
||||||
TODO
|
|
||||||
^^^^
|
|
||||||
|
|
||||||
TODO
|
|
||||||
|
|
||||||
Other Changes
|
Other Changes
|
||||||
=============
|
=============
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,17 @@
|
||||||
2.7.0
|
2.7.0
|
||||||
=====
|
-----
|
||||||
|
|
||||||
|
Other Changes
|
||||||
|
=============
|
||||||
|
|
||||||
Sane Plugin
|
Sane Plugin
|
||||||
-----------
|
^^^^^^^^^^^
|
||||||
|
|
||||||
The Sane plugin has now been split into its own repo:
|
The Sane plugin has now been split into its own repo:
|
||||||
https://github.com/python-pillow/Sane .
|
https://github.com/python-pillow/Sane .
|
||||||
|
|
||||||
|
|
||||||
Png text chunk size limits
|
Png text chunk size limits
|
||||||
--------------------------
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
To prevent potential denial of service attacks using compressed text
|
To prevent potential denial of service attacks using compressed text
|
||||||
chunks, there are now limits to the decompressed size of text chunks
|
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.
|
know that there are large text blocks that are desired.
|
||||||
|
|
||||||
Image resizing filters
|
Image resizing filters
|
||||||
----------------------
|
^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Image resizing methods :py:meth:`~PIL.Image.Image.resize` and
|
Image resizing methods :py:meth:`~PIL.Image.Image.resize` and
|
||||||
:py:meth:`~PIL.Image.Image.thumbnail` take a ``resample`` argument, which tells
|
: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.
|
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
|
||||||
|
@ -50,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``.
|
||||||
|
|
||||||
|
@ -64,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
|
||||||
|
@ -93,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
|
||||||
|
@ -103,7 +105,7 @@ 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
|
||||||
|
@ -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.
|
improved for large images which don't fit in the processor cache.
|
||||||
|
|
||||||
Gaussian blur and unsharp mask
|
Gaussian blur and unsharp mask
|
||||||
------------------------------
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
The :py:meth:`~PIL.ImageFilter.GaussianBlur` implementation has been replaced
|
The :py:meth:`~PIL.ImageFilter.GaussianBlur` implementation has been replaced
|
||||||
with a sequential application of box filters. The new implementation is based on
|
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.
|
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
|
||||||
|
@ -136,7 +138,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
|
||||||
|
@ -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.
|
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,
|
||||||
|
@ -157,7 +159,7 @@ so the quality was worse compared to other Gaussian blur software.
|
||||||
The new implementation does not have this drawback.
|
The new implementation does not have this drawback.
|
||||||
|
|
||||||
TIFF Parameter Changes
|
TIFF Parameter Changes
|
||||||
----------------------
|
^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Several kwarg parameters for saving TIFF images were previously
|
Several kwarg parameters for saving TIFF images were previously
|
||||||
specified as strings with included spaces (e.g. 'x resolution'). This
|
specified as strings with included spaces (e.g. 'x resolution'). This
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
2.8.0
|
2.8.0
|
||||||
=====
|
-----
|
||||||
|
|
||||||
|
Other Changes
|
||||||
|
=============
|
||||||
|
|
||||||
Open HTTP response objects with Image.open
|
Open HTTP response objects with Image.open
|
||||||
------------------------------------------
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
HTTP response objects returned from ``urllib2.urlopen(url)`` or
|
HTTP response objects returned from ``urllib2.urlopen(url)`` or
|
||||||
``requests.get(url, stream=True).raw`` are 'file-like' but do not support ``.seek()``
|
``requests.get(url, stream=True).raw`` are 'file-like' but do not support ``.seek()``
|
||||||
|
|
|
@ -1,32 +1,8 @@
|
||||||
|
|
||||||
3.0.0
|
3.0.0
|
||||||
=====
|
-----
|
||||||
|
|
||||||
Saving Multipage Images
|
Deprecations
|
||||||
-----------------------
|
============
|
||||||
|
|
||||||
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
|
|
||||||
------------------
|
|
||||||
|
|
||||||
Several methods that have been marked as deprecated for many releases
|
Several methods that have been marked as deprecated for many releases
|
||||||
have been removed in this release::
|
have been removed in this release::
|
||||||
|
@ -42,8 +18,34 @@ have been removed in this release::
|
||||||
ImageWin.fromstring()
|
ImageWin.fromstring()
|
||||||
ImageWin.tostring()
|
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.
|
The external dependencies on libjpeg and zlib are now required by default.
|
||||||
If the headers or libraries are not found, then installation will abort
|
If the headers or libraries are not found, then installation will abort
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
|
|
||||||
3.1.0
|
3.1.0
|
||||||
=====
|
-----
|
||||||
|
|
||||||
|
Other Changes
|
||||||
|
=============
|
||||||
|
|
||||||
ImageDraw arc, chord and pieslice can now use floats
|
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``,
|
There is no longer a need to ensure that the start and end arguments for ``arc``,
|
||||||
``chord`` and ``pieslice`` are integers.
|
``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.
|
utilised in the drawing process.
|
||||||
|
|
||||||
Consistent multiline text spacing
|
Consistent multiline text spacing
|
||||||
---------------------------------
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
When using the ``ImageDraw`` multiline methods, the spacing between
|
When using the ``ImageDraw`` multiline methods, the spacing between
|
||||||
lines was inconsistent, based on the combination on ascenders and
|
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.
|
There is also now a default spacing of 4px between lines.
|
||||||
|
|
||||||
Exif, Jpeg and Tiff Metadata
|
Exif, Jpeg and Tiff Metadata
|
||||||
----------------------------
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
There were major changes in the TIFF ImageFileDirectory support in
|
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
|
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.
|
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
|
||||||
|
@ -50,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
|
||||||
|
@ -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.
|
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
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
|
|
||||||
3.2.0
|
3.2.0
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
Other Changes
|
||||||
|
=============
|
||||||
|
|
||||||
New DDS and FTEX Image Plugins
|
New DDS and FTEX Image Plugins
|
||||||
==============================
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
The ``DdsImagePlugin`` reading DXT1 and DXT5 encoded ``.dds`` images was
|
The ``DdsImagePlugin`` reading DXT1 and DXT5 encoded ``.dds`` images was
|
||||||
added. DXT3 images are not currently supported.
|
added. DXT3 images are not currently supported.
|
||||||
|
@ -14,7 +16,7 @@ per file, in the ``.ftc`` (compressed) and ``.ftu`` (uncompressed)
|
||||||
formats.
|
formats.
|
||||||
|
|
||||||
Updates to the GbrImagePlugin
|
Updates to the GbrImagePlugin
|
||||||
=============================
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
The ``GbrImagePlugin`` (GIMP brush format) has been updated to fix
|
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.
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
3.3.0
|
3.3.0
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
Other Changes
|
||||||
|
=============
|
||||||
|
|
||||||
Libimagequant support
|
Libimagequant support
|
||||||
=====================
|
^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
There is now support for using libimagequant as a higher quality
|
There is now support for using libimagequant as a higher quality
|
||||||
quantization option in ``Image.quantize()`` on Unix-like
|
quantization option in ``Image.quantize()`` on Unix-like
|
||||||
|
@ -12,7 +15,7 @@ differences.
|
||||||
|
|
||||||
|
|
||||||
New Setup.py options
|
New Setup.py options
|
||||||
====================
|
^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
There are two new options to control the ``build_ext`` task in ``setup.py``:
|
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
|
cross compilers that specify that information in via environment
|
||||||
variables.
|
variables.
|
||||||
|
|
||||||
|
|
||||||
Resizing
|
Resizing
|
||||||
========
|
^^^^^^^^
|
||||||
|
|
||||||
Image resampling for 8-bit per channel images was rewritten using only integer
|
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
|
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
|
Color calculation for images in the ``LA`` mode on semitransparent pixels
|
||||||
was fixed.
|
was fixed.
|
||||||
|
|
||||||
|
|
||||||
Rotation
|
Rotation
|
||||||
========
|
^^^^^^^^
|
||||||
|
|
||||||
Rotation for angles divisible by 90 degrees now always uses transposition.
|
Rotation for angles divisible by 90 degrees now always uses transposition.
|
||||||
This greatly improves both quality and performance in this case.
|
This greatly improves both quality and performance in this case.
|
||||||
Also, the bug with wrong image size calculation when rotating by 90 degrees
|
Also, the bug with wrong image size calculation when rotating by 90 degrees
|
||||||
was fixed.
|
was fixed.
|
||||||
|
|
||||||
|
|
||||||
Image Metadata
|
Image Metadata
|
||||||
==============
|
^^^^^^^^^^^^^^
|
||||||
|
|
||||||
The return type for binary data in version 2 Exif and Tiff 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
|
has been changed from a tuple of integers to bytes. This is a change
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
|
|
||||||
3.3.2
|
3.3.2
|
||||||
=====
|
-----
|
||||||
|
|
||||||
|
Security
|
||||||
|
========
|
||||||
|
|
||||||
Integer overflow in Map.c
|
Integer overflow in Map.c
|
||||||
-------------------------
|
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Pillow prior to 3.3.2 may experience integer overflow errors 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
|
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.
|
This issue was found by Cris Neckar at Divergent Security.
|
||||||
|
|
||||||
Sign Extension in Storage.c
|
Sign Extension in Storage.c
|
||||||
---------------------------
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Pillow prior to 3.3.2 and PIL 1.1.7 (at least) do not check for
|
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
|
negative image sizes in ``ImagingNew`` in ``Storage.c``. A negative
|
||||||
|
|
|
@ -1,9 +1,29 @@
|
||||||
|
|
||||||
3.4.0
|
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
|
New resizing filters
|
||||||
====================
|
^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Two new filters available for ``Image.resize()`` and ``Image.thumbnail()``
|
Two new filters available for ``Image.resize()`` and ``Image.thumbnail()``
|
||||||
functions: ``BOX`` and ``HAMMING``. ``BOX`` is the high-performance filter with
|
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``.
|
providing the image downscaling quality comparable to ``BICUBIC``.
|
||||||
Both new filters don't show good quality for the image upscaling.
|
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
|
New DDS Decoders
|
||||||
================
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Pillow can now decode DXT3 images, as well as the previously supported
|
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
|
DXT1 and DXT5 formats. All three formats are now decoded in C code for
|
||||||
better performance.
|
better performance.
|
||||||
|
|
||||||
Append images to GIF
|
Append images to GIF
|
||||||
====================
|
^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Additional frames can now be appended when saving a GIF file, through the
|
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,
|
``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, ...])
|
im.save(out, save_all=True, append_images=[im1, im2, ...])
|
||||||
|
|
||||||
Save multiple frame TIFF
|
Save multiple frame TIFF
|
||||||
========================
|
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Multiple frames can now be saved in a TIFF file by using the ``save_all`` option.
|
Multiple frames can now be saved in a TIFF file by using the ``save_all`` option.
|
||||||
e.g.::
|
e.g.::
|
||||||
|
|
||||||
im.save("filename.tiff", format="TIFF", save_all=True)
|
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.
|
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
4.0.0
|
4.0.0
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
Other Changes
|
||||||
|
=============
|
||||||
|
|
||||||
Python 2.6 and 3.2 Dropped
|
Python 2.6 and 3.2 Dropped
|
||||||
==========================
|
==========================
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
4.1.0
|
4.1.0
|
||||||
-----
|
-----
|
||||||
|
|
||||||
Removed Deprecated Items
|
Deprecations
|
||||||
========================
|
============
|
||||||
|
|
||||||
Several deprecated items have been removed.
|
Several deprecated items have been removed.
|
||||||
|
|
||||||
|
@ -15,8 +15,11 @@ Several deprecated items have been removed.
|
||||||
``PIL.ImageDraw.ImageDraw.setfont`` have been removed.
|
``PIL.ImageDraw.ImageDraw.setfont`` have been removed.
|
||||||
|
|
||||||
|
|
||||||
|
Other Changes
|
||||||
|
=============
|
||||||
|
|
||||||
Closing Files When Opening Images
|
Closing Files When Opening Images
|
||||||
=================================
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
The file handling when opening images has been overhauled. Previously,
|
The file handling when opening images has been overhauled. Previously,
|
||||||
Pillow would attempt to close some, but not all image formats
|
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
|
the underlying file until we are done with the image. The mapping
|
||||||
will be closed in the ``close`` or ``__del__`` method.
|
will be closed in the ``close`` or ``__del__`` method.
|
||||||
|
|
||||||
|
|
||||||
Changes to GIF Handling When Saving
|
Changes to GIF Handling When Saving
|
||||||
===================================
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
The :py:class:`PIL.GifImagePlugin` code has been refactored to fix the flow when
|
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:
|
saving images. There are two external changes that arise from this:
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
4.1.1
|
4.1.1
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
Other Changes
|
||||||
|
=============
|
||||||
|
|
||||||
Fix Regression with reading DPI from EXIF data
|
Fix Regression with reading DPI from EXIF data
|
||||||
==============================================
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Some JPEG images don't contain DPI information in the image metadata,
|
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
|
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
|
could be included there. This fix adds the ability to read ints as
|
||||||
well as rational values.
|
well as rational values.
|
||||||
|
|
||||||
|
|
||||||
Incompatibility between 3.6.0 and 3.6.1
|
Incompatibility between 3.6.0 and 3.6.1
|
||||||
=======================================
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
CPython 3.6.1 added a new symbol, PySlice_GetIndicesEx, which was not
|
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
|
present in 3.6.0. This had the effect of causing binaries compiled on
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
4.2.0
|
4.2.0
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
Other Changes
|
||||||
|
=============
|
||||||
|
|
||||||
Added Complex Text Rendering
|
Added Complex Text Rendering
|
||||||
============================
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Pillow now supports complex text rendering for scripts requiring glyph
|
Pillow now supports complex text rendering for scripts requiring glyph
|
||||||
composition and bidirectional flow. This optional feature adds three
|
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.
|
Unix and Mac, but has not yet been built on Windows platforms.
|
||||||
|
|
||||||
New Optional Parameters
|
New Optional Parameters
|
||||||
=======================
|
^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
* :py:meth:`PIL.ImageDraw.floodfill` has a new optional parameter:
|
* :py:meth:`PIL.ImageDraw.floodfill` has a new optional parameter:
|
||||||
threshold. This specifies a tolerance for the color to replace with
|
threshold. This specifies a tolerance for the color to replace with
|
||||||
|
@ -22,16 +25,17 @@ New Optional Parameters
|
||||||
multipage outputs.
|
multipage outputs.
|
||||||
|
|
||||||
New DecompressionBomb Warning
|
New DecompressionBomb Warning
|
||||||
=============================
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
:py:meth:`PIL.Image.Image.crop` now may raise a DecompressionBomb
|
:py:meth:`PIL.Image.Image.crop` now may raise a DecompressionBomb
|
||||||
warning if the crop region enlarges the image over the threshold
|
warning if the crop region enlarges the image over the threshold
|
||||||
specified by :py:data:`PIL.Image.MAX_IMAGE_PIXELS`.
|
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``,
|
* The methods ``PIL.ImageWin.Dib.fromstring``,
|
||||||
``PIL.ImageWin.Dib.tostring`` and
|
``PIL.ImageWin.Dib.tostring`` and
|
||||||
|
@ -44,7 +48,7 @@ Several deprecated items have been removed.
|
||||||
an :py:exc:`IOError` is raised.
|
an :py:exc:`IOError` is raised.
|
||||||
|
|
||||||
Removed Core Image Function
|
Removed Core Image Function
|
||||||
===========================
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
The unused function ``Image.core.new_array`` was removed. This is an
|
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
|
internal function that should not have been used by user code, but it
|
||||||
|
|
|
@ -3,8 +3,11 @@
|
||||||
|
|
||||||
There are no functional changes in this release.
|
There are no functional changes in this release.
|
||||||
|
|
||||||
|
Other Changes
|
||||||
|
=============
|
||||||
|
|
||||||
Fixed Windows PyPy Build
|
Fixed Windows PyPy Build
|
||||||
========================
|
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
A change in the 4.2.0 cycle broke the Windows PyPy build. This has
|
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.
|
been fixed, and PyPy is now part of the Windows CI matrix.
|
||||||
|
|
|
@ -1,15 +1,23 @@
|
||||||
5.1.0
|
5.1.0
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
Other Changes
|
||||||
|
=============
|
||||||
|
|
||||||
New File Format
|
New File Format
|
||||||
===============
|
^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
BLP File Format
|
BLP File Format
|
||||||
^^^^^^^^^^^^^^^
|
---------------
|
||||||
|
|
||||||
Pillow now supports reading the BLP "Blizzard Mipmap" file format used
|
Pillow now supports reading the BLP "Blizzard Mipmap" file format used
|
||||||
for tiles in Blizzard's engine.
|
for tiles in Blizzard's engine.
|
||||||
|
|
||||||
|
WebP memory leak
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
A memory leak when opening ``WebP`` files has been fixed.
|
||||||
|
|
||||||
API Changes
|
API Changes
|
||||||
===========
|
===========
|
||||||
|
|
||||||
|
@ -26,11 +34,3 @@ 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
|
|
||||||
=============
|
|
||||||
|
|
||||||
WebP memory leak
|
|
||||||
^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
A memory leak when opening ``WebP`` files has been fixed.
|
|
||||||
|
|
|
@ -3,6 +3,9 @@
|
||||||
|
|
||||||
This release fixes regressions in 5.4.0.
|
This release fixes regressions in 5.4.0.
|
||||||
|
|
||||||
|
Other Changes
|
||||||
|
=============
|
||||||
|
|
||||||
Installation on Termux
|
Installation on Termux
|
||||||
^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
7.1.1
|
7.1.1
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
Other Changes
|
||||||
|
=============
|
||||||
|
|
||||||
Fix regression seeking PNG files
|
Fix regression seeking PNG files
|
||||||
================================
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
This fixes a regression introduced in 7.1.0 when adding support for APNG files when calling
|
This fixes a regression introduced in 7.1.0 when adding support for APNG files when calling
|
||||||
``seek`` and ``tell``:
|
``seek`` and ``tell``:
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
7.1.2
|
7.1.2
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
Other Changes
|
||||||
|
=============
|
||||||
|
|
||||||
Fix another regression seeking PNG files
|
Fix another regression seeking PNG files
|
||||||
========================================
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
This fixes a regression introduced in 7.1.0 when adding support for APNG files.
|
This fixes a regression introduced in 7.1.0 when adding support for APNG files.
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
8.3.1
|
8.3.1
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
Other Changes
|
||||||
|
=============
|
||||||
|
|
||||||
Fixed regression converting to NumPy arrays
|
Fixed regression converting to NumPy arrays
|
||||||
===========================================
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
This fixes a regression introduced in 8.3.0 when converting an image to a NumPy array
|
This fixes a regression introduced in 8.3.0 when converting an image to a NumPy array
|
||||||
with a ``dtype`` argument.
|
with a ``dtype`` argument.
|
||||||
|
@ -28,7 +31,7 @@ access.
|
||||||
The :py:exc:`OSError` is now silently caught.
|
The :py:exc:`OSError` is now silently caught.
|
||||||
|
|
||||||
Fixed removing orientation in ImageOps.exif_transpose
|
Fixed removing orientation in ImageOps.exif_transpose
|
||||||
=====================================================
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
In 8.3.0, :py:meth:`~PIL.ImageOps.exif_transpose` was changed to ensure that the
|
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
|
original image EXIF data was not modified, and the orientation was only removed from
|
||||||
|
|
Loading…
Reference in New Issue
Block a user