mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-25 17:36:18 +03:00
139 lines
4.6 KiB
ReStructuredText
139 lines
4.6 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.
|
|
|
|
Other Changes
|
|
=============
|
|
|
|
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.
|
|
|
|
Pillow now can read 16-bit signed integer single channel TIFF
|
|
files. The image data is promoted to 32-bit for storage and
|
|
processing.
|
|
|
|
SGI Images
|
|
^^^^^^^^^^
|
|
|
|
Pillow can now read and write uncompressed 16-bit multichannel SGI
|
|
images to and from RGB and RGBA formats. The image data is truncated
|
|
to 8-bit precision.
|
|
|
|
Pillow can now read RLE encoded SGI images in both 8 and 16-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 :py:class:`~PIL.ImageFilter.MultibandFilter` feature.
|
|
* All memory allocation for images is now done in blocks, rather than
|
|
falling back to an allocation for each scan line for images larger
|
|
than the block size.
|
|
|
|
CMYK Conversion
|
|
^^^^^^^^^^^^^^^
|
|
|
|
The basic CMYK->RGB conversion has been tweaked to match the formula
|
|
from Google Chrome. This produces an image that is generally lighter
|
|
than the previous formula, and more in line with what color managed
|
|
applications produce.
|