Pillow

Latest version: v11.1.0

Safety actively analyzes 721825 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 17 of 24

1.1.7

-----------

- Set GIF loop info property to the number of iterations if a NETSCAPE
loop extension is present, instead of always setting it to 1 (from
Valentino Volonghi).

1.1.7c1

-------

- Improved PNG compression (from Alexey Borzenkov).

- Read interlaced PNG files (from Conrado Porto Lopes Gouvêa)

- Added various TGA improvements from Alexey Borzenkov, including
support for specifying image orientation.

- Bumped block threshold to 16 megabytes, made size estimation a bit
more accurate. This speeds up allocation of large images.

- Fixed rounding error in ImagingDrawWideLine.

"gormish" writes: ImagingDrawWideLine() in Draw.c has a bug in every
version I've seen, which leads to different width lines depending on
the order of the points in the line. This is especially bad at some
angles where a 'width=2' line can completely disappear.

- Added support for RGBA mode to the SGI module (based on code by
Karsten Hiddemann).

- Handle repeated IPTC tags (adapted from a patch by Eric Bruning).

Eric writes: According to the specification, some IPTC tags can be
repeated, e.g., tag 2:25 (keywords). PIL 1.1.6 only retained the last
instance of that tag. Below is a patch to store all tags. If there are
multiple tag instances, they are stored in a (python) list. Single tag
instances remain as strings.

- Fixed potential crash in ImageFilter for small target images
(reported by Zac Burns and Daniel Fetchinson).

- Use BMP instead of JPEG as temporary show format on Mac OS X.

- Fixed putpixel/new for I;16 with colors > 255.

- Added integer power support to ImagingMath.

- Added limited support for I;16L mode (explicit little endian).

- Moved WMF support into Image.core; enable WMF rendering by default
if renderer is available.

- Mark the ARG plugin as obsolete.

- Added version query mechanism to ImageCms and ImageFont, for
debugging.

- Added (experimental) ImageCms function for fetching the ICC profile
for the current display (currently Windows only).

Added HWND/HDC support to ImageCms.get_display_profile().

- Added WMF renderer (Windows only).

- Added ImagePointHandler and ImageTransformHandler mixins; made
ImageCmsTransform work with im.point.

- Fixed potential endless loop in the XVThumbnail reader (from Nikolai
Ugelvik).

- Added Kevin Cazabon's pyCMS package.

The C code has been moved to _imagingcms.c, the Python interface
module is installed as PIL.ImageCMS.

Added support for in-memory ICC profiles.

Unified buildTransform and buildTransformFromOpenProfiles.

The profile can now be either a filename, a profile object, or a
file-like object containing an in-memory profile.

Additional fixes from Florian Böch:

Very nice - it just needs LCMS flags support so we can use black
point compensation and softproofing :) See attached patches. They
also fix a naming issue which could cause confusion - display
profile (ImageCms wording) actually means proof profile (lcms
wording), so I changed variable names and docstrings where
applicable. Patches are tested under Python 2.6.

- Improved support for layer names in PSD files (from Sylvain Baubeau)

Sylvain writes: I needed to be able to retrieve the names of the
layers in a PSD files. But PsdImagePlugin.py didn't do the job so I
wrote this very small patch.

- Improved RGBA support for ImageTk for 8.4 and newer (from Con
Radchenko).

This replaces the slow run-length based encoding model with true
compositing at the Tk level.

- Added support for 16- and 32-bit images to McIdas loader.

Based on file samples and stand-alone reader code provided by Craig
Swank.

- Added ImagePalette support to putpalette.

- Fixed problem with incremental parsing of PNG files.

- Make selftest.py report non-zero status on failure (from Mark
Sienkiewicz)

- Add big endian save support and multipage infrastructure to the TIFF
writer (from Sebastian Haase).

- Handle files with GPS IFD but no basic EXIF IFD (reported by Kurt
Schwehr).

- Added zTXT support (from Andrew Kuchling via Lowell Alleman).

- Fixed potential infinite loop bug in ImageFont (from Guilherme Polo).

- Added sample ICC profiles (from Kevin Cazabon)

- Fixed array interface for I, F, and RGBA/RGBX images.

- Added Chroma subsampling support for JPEG (from Justin Huff).

Justin writes: Attached is a patch (against PIL 1.1.6) to provide
control over the chroma subsampling done by the JPEG encoder. This
is often useful for reducing compression artifacts around edges of
clipart and text.

- Added USM/Gaussian Blur code from Kevin Cazabon.

- Fixed bug w. uninitialized image data when cropping outside the
source image.

- Use ImageShow to implement the Image.show method.

Most notably, this picks the 'display' utility when available. It
also allows application code to register new display utilities via
the ImageShow registry.

- Release the GIL in the PNG compressor (from Michael van Tellingen).

- Revised JPEG CMYK handling.

Always assume Adobe behaviour, both when reading and writing (based on
a patch by Kevin Cazabon, and test data by Tim V. and Charlie Clark, and
additional debugging by Michael van Tellingen).

- Support for preserving ICC profiles (by Florian Böch via Tim Hatch).

Florian writes:

It's a beta, so still needs some testing, but should allow you to:

- retain embedded ICC profiles when saving from/to JPEG, PNG, TIFF.
Existing code doesn't need to be changed.
- access embedded profiles in JPEG, PNG, PSD, TIFF.

It also includes patches for TIFF to retain IPTC, Photoshop and XMP
metadata when saving as TIFF again, read/write TIFF resolution
information correctly, and to correct inverted CMYK JPEG files.

- Fixed potential memory leak in median cut quantizer (from Evgeny Salmin).

- Fixed OverflowError when reading upside-down BMP images.

- Added resolution save option for PDF files.

Andreas Kostyrka writes: I've included a patched PdfImagePlugin.py
based on 1.1.6 as included in Ubuntu, that supports a "resolution"
save option. Not great, but it makes the PDF saving more useful by
allowing PDFs that are not exactly 72dpi.

- Look for Tcl/Tk include files in version-specific include directory
(from Encolpe Degoute).

- Fixed grayscale rounding error in ImageColor.getcolor (from Tim
Hatch).

- Fixed calculation of mean value in ImageEnhance.Contrast (reported
by "roop" and Scott David Daniels).

- Fixed truetype positioning when first character has a negative left
bearing (from Ned Batchelder):

Ned writes: In PIL 1.1.6, ImageDraw.text will position the string
incorrectly if the first character has a negative left bearing. To
see the problem, show a string like "///" in an italic font. The
first slash will be clipped at the left, and the string will be
mis-positioned.

- Fixed resolution unit bug in tiff reader/writer (based on code by
Florian Höch, Gary Bloom, and others).

- Added simple transparency support for RGB images (reported by
Sebastian Spaeth).

- Added support for Unicode filenames in ImageFont.truetype (from Donn
Ingle).

- Fixed potential crash in ImageFont.getname method (from Donn Ingle).

- Fixed encoding issue in PIL/WalImageFile (from Santiago M. Mola).

1.1.6

-----

- Fixed some 64-bit compatibility warnings for Python 2.5.

- Added threading support for the Sane driver (from Abel Deuring).

1.1.6b2

-------

- Added experimental "floodfill" function to the ImageDraw module
(based on code by Eric Raymond).

- The default arguments for "frombuffer" doesn't match "fromstring"
and the documentation; this is a bug, and will most likely be fixed
in a future version. In this release, PIL prints a warning message
instead. To silence the warning, change any calls of the form
"frombuffer(mode, size, data)" to::

frombuffer(mode, size, data, "raw", mode, 0, 1)

- Added "fromarray" function, which takes an object implementing the
NumPy array interface and creates a PIL Image from it. (from Travis
Oliphant).

- Added NumPy array interface support (__array_interface__) to the
Image class (based on code by Travis Oliphant).

This allows you to easily convert between PIL image memories and
NumPy arrays::

import numpy, Image
im = Image.open('hopper.jpg')
a = numpy.asarray(im) a is readonly
im = Image.fromarray(a)

- Fixed CMYK polarity for JPEG images, by treating all images as
"Adobe CMYK" images. (thanks to Cesare Leonardi and Kevin Cazabon
for samples, debugging, and patches).

1.1.6b1

-------

- Added 'expand' option to the Image 'rotate' method. If true, the
output image is made large enough to hold the entire rotated image.

- Changed the ImageDraw 'line' method to always draw the last pixel in
a polyline, independent of line angle.

- Fixed bearing calculation and clipping in the ImageFont truetype
renderer; this could lead to clipped text, or crashes in the low-level
_imagingft module. (based on input from Adam Twardoch and
others).

- Added ImageQt wrapper module, for converting PIL Image objects to
QImage objects in an efficient way.

- Fixed 'getmodebands' to return the number of bands also for "PA"
and "LA" modes. Added 'getmodebandnames' helper that return the
band names.

1.1.6a2

-------

- Added float/double support to the TIFF loader (from Russell
Nelson).

- Fixed broken use of realloc() in path.c (from Jan Matejek)

- Added save support for Spider images (from William Baxter).

- Fixed broken 'paste' and 'resize' operations in pildriver
(from Bill Janssen).

- Added support for duplex scanning to the Sane interface (Abel
Deuring).

Page 17 of 24

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.