mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-11-14 05:36:48 +03:00
a53c39eb46
Co-Authored-By: hugovk <hugovk@users.noreply.github.com>
68 lines
1.7 KiB
ReStructuredText
68 lines
1.7 KiB
ReStructuredText
5.4.0
|
|
-----
|
|
|
|
API Changes
|
|
===========
|
|
|
|
APNG extension to PNG plugin
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
Animated Portable Network Graphics (APNG) images are not fully supported but
|
|
can be opened via the PNG plugin to get some basic info::
|
|
|
|
im = Image.open("image.apng")
|
|
print(im.mode) # "RGBA"
|
|
print(im.size) # (245, 245)
|
|
im.show() # Shows a single frame
|
|
|
|
Check for libjpeg-turbo
|
|
^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
You can check if Pillow has been built against the libjpeg-turbo version of the
|
|
libjpeg library::
|
|
|
|
from PIL import features
|
|
features.check_feature("libjpeg_turbo") # True or False
|
|
|
|
Negative indexes in pixel access
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
When accessing individual image pixels, negative indexes are now also accepted.
|
|
For example, to get or set the farthest pixel in the lower right of an image::
|
|
|
|
px = im.load()
|
|
print(px[-1, -1])
|
|
px[-1, -1] = (0, 0, 0)
|
|
|
|
|
|
New custom TIFF tags
|
|
^^^^^^^^^^^^^^^^^^^^
|
|
|
|
TIFF images can now be saved with custom integer, float and string TIFF tags::
|
|
|
|
im = Image.new("RGB", (200, 100))
|
|
custom = {
|
|
37000: 4,
|
|
37001: 4.2,
|
|
37002: "custom tag value",
|
|
37003: u"custom tag value",
|
|
37004: b"custom tag value",
|
|
}
|
|
im.save("output.tif", tiffinfo=custom)
|
|
|
|
im2 = Image.open("output.tif")
|
|
print(im2.tag_v2[37000]) # 4
|
|
print(im2.tag_v2[37002]) # "custom tag value"
|
|
print(im2.tag_v2[37004]) # b"custom tag value"
|
|
|
|
Other Changes
|
|
=============
|
|
|
|
ImageOps.fit
|
|
^^^^^^^^^^^^
|
|
|
|
Now uses one resize operation with ``box`` parameter internally
|
|
instead of a crop and scale operations sequence.
|
|
This improves the performance and accuracy of cropping since
|
|
the ``box`` parameter accepts float values.
|