mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-28 02:46:18 +03:00
b51d77e4e5
# Conflicts: # docs/releasenotes/4.3.0.rst
112 lines
3.8 KiB
ReStructuredText
112 lines
3.8 KiB
ReStructuredText
4.3.0
|
|
-----
|
|
|
|
API Changes
|
|
===========
|
|
|
|
Deprecations
|
|
^^^^^^^^^^^^
|
|
|
|
Several undocumented functions in ImageOps have been deprecated:
|
|
``gaussian_blur``, ``gblur``, ``unsharp_mask``, ``usm`` and
|
|
``box_blur``. Use the equivalent operations in ImageFilter
|
|
instead. These functions will be removed in a future release.
|
|
|
|
TIFF Metadata Changes
|
|
^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
* TIFF tags with unknown type/quantity now default to being bare
|
|
values if they are 1 element, where previously they would be a
|
|
single element tuple. This is only with the new api, not the legacy
|
|
api. This normalizes the handling of fields, so that the metadata
|
|
with inferred or image specified counts are handled the same as
|
|
metadata with count specified in the TIFF spec.
|
|
* The ``PhotoshopInfo``, ``XMP``, and ``JPEGTables`` tags now have a
|
|
defined type (bytes) and a count of 1.
|
|
* The ``ImageJMetaDataByteCounts`` tag now has an arbitrary number of
|
|
items, as there can be multiple items, one for UTF-8, and one for
|
|
UTF-16.
|
|
|
|
Core Image API Changes
|
|
^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
These are internal functions that should not have been used by user
|
|
code, but they were accessible from the python layer.
|
|
|
|
Debugging code within ``Image.core.grabclipboard`` was removed. It had been
|
|
marked as ``will be removed in future versions`` since PIL. When enabled, it
|
|
identified the format of the clipboard data.
|
|
|
|
The ``PIL.Image.core.copy`` and ``PIL.Image.Image.im.copy2`` methods
|
|
have been removed.
|
|
|
|
The ``PIL.Image.core.getcount`` methods have been removed, use
|
|
``PIL.Image.core.get_stats()['new_count']`` property instead.
|
|
|
|
|
|
API Additions
|
|
=============
|
|
|
|
Get One Channel From Image
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
A new method :py:meth:`PIL.Image.Image.getchannel` has been added to
|
|
return a single channel by index or name. For example,
|
|
``image.getchannel("A")`` will return alpha channel as separate image.
|
|
``getchannel`` should work up to 6 times faster than
|
|
``image.split()[0]`` in previous Pillow versions.
|
|
|
|
Box Blur
|
|
^^^^^^^^
|
|
|
|
A new filter, :py:class:`PIL.ImageFilter.BoxBlur`, has been
|
|
added. This is a filter with similar results to a Gaussian blur, but
|
|
is much faster.
|
|
|
|
Partial Resampling
|
|
^^^^^^^^^^^^^^^^^^
|
|
|
|
Added new argument ``box`` for :py:meth:`PIL.Image.Image.resize`. This
|
|
argument defines a source rectangle from within the source image to be
|
|
resized. This is very similar to the ``image.crop(box).resize(size)``
|
|
sequence except that ``box`` can be specified with subpixel accuracy.
|
|
|
|
New Transpose Operation
|
|
^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
The ``Image.TRANSVERSE`` operation has been added to
|
|
:py:meth:`PIL.Image.Image.transpose`. This is equivalent to a transpose
|
|
operation about the opposite diagonal.
|
|
|
|
Multiband Filters
|
|
^^^^^^^^^^^^^^^^^
|
|
|
|
There is a new :py:class:`PIL.ImageFilter.MultibandFilter` base class
|
|
for image filters that can run on all channels of an image in one
|
|
operation. The original :py:class:`PIL.ImageFilter.Filter` class
|
|
remains for image filters that can process only single band images, or
|
|
require splitting of channels prior to filtering.
|
|
|
|
|
|
Loading 16-bit TIFF Images
|
|
==========================
|
|
|
|
Pillow now can read 16-bit multichannel TIFF files including files
|
|
with alpha transparency. The image data is truncated to 8-bit
|
|
precision.
|
|
|
|
Performance
|
|
===========
|
|
|
|
This release contains several performance improvements:
|
|
|
|
* Many memory bandwidth-bounded operations such as crop, image allocation,
|
|
conversion, split into bands and merging from bands are up to 2x faster.
|
|
* Upscaling of multichannel images (such as RGB) is accelerated by 5-10%
|
|
* JPEG loading is accelerated up to 15% and JPEG saving up to 20% when
|
|
using a recent version of libjpeg-turbo.
|
|
* ``Image.transpose`` has been accelerated 15% or more by using a cache
|
|
friendly algorithm.
|
|
* ImageFilters based on Kernel convolution are significantly faster
|
|
due to the new MultibandFilter feature.
|