mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-11-04 01:47:47 +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.
 |