Changelog History
Page 1
-
v9.3.0 Changes
October 29, 2022Limit SAMPLESPERPIXEL to avoid runtime DOS #6700 [wiredfool]
๐ Initialize libtiff buffer when saving #6699 [radarhere]
Inline fname2char to fix memory leak #6329 [nulano]
๐ Fix memory leaks related to text features #6330 [nulano]
๐ Use double quotes for version check on old CPython on Windows #6695 [hugovk]
โ Remove backup implementation of Round for Windows platforms #6693 [cgohlke]
Fixed set_variation_by_name offset #6445 [radarhere]
Fix malloc in _imagingft.c:font_setvaraxes #6690 [cgohlke]
๐ Release Python GIL when converting images using matrix operations #6418 [hmaarrfk]
โ Added ExifTags enums #6630 [radarhere]
Do not modify previous frame when calculating delta in PNG #6683 [radarhere]
โ Added support for reading BMP images with RLE4 compression #6674 [npjg, radarhere]
Decode JPEG compressed BLP1 data in original mode #6678 [radarhere]
โ Added GPS TIFF tag info #6661 [radarhere]
โ Added conversion between RGB/RGBA/RGBX and LAB #6647 [radarhere]
Do not attempt normalization if mode is already normal #6644 [radarhere]
๐ Fixed seeking to an L frame in a GIF #6576 [radarhere]
Consider all frames when selecting mode for PNG save_all #6610 [radarhere]
Don't reassign crc on ChunkStream close #6627 [wiredfool, radarhere]
โ Raise a warning if NumPy failed to raise an error during conversion #6594 [radarhere]
๐ Show all frames in ImageShow #6611 [radarhere]
๐ Allow FLI palette chunk to not be first #6626 [radarhere]
If first GIF frame has transparency for RGB_ALWAYS loading strategy, use RGBA mode #6592 [radarhere]
Round box position to integer when pasting embedded color #6517 [radarhere, nulano]
โ Removed EXIF prefix when saving WebP #6582 [radarhere]
Pad IM palette to 768 bytes when saving #6579 [radarhere]
โ Added DDS BC6H reading #6449 [ShadelessFox, REDxEYE, radarhere]
โ Added support for opening WhiteIsZero 16-bit integer TIFF images #6642 [JayWiz, radarhere]
Raise an error when allocating translucent color to RGB palette #6654 [jsbueno, radarhere]
โ Added reading of TIFF child images #6569 [radarhere]
๐ Improved ImageOps palette handling #6596 [PososikTeam, radarhere]
๐ Defer parsing of palette into colors #6567 [radarhere]
Apply transparency to P images in ImageTk.PhotoImage #6559 [radarhere]
๐ Use rounding in ImageOps contain() and pad() #6522 [bibinhashley, radarhere]
๐ Fixed GIF remapping to palette with duplicate entries #6548 [radarhere]
๐ Allow remap_palette() to return an image with less than 256 palette entries #6543 [radarhere]
Corrected BMP and TGA palette size when saving #6500 [radarhere]
Do not call load() before draft() in Image.thumbnail #6539 [radarhere]
Copy palette when converting from P to PA #6497 [radarhere]
๐ Allow RGB and RGBA values for PA image putpixel #6504 [radarhere]
โ Removed support for tkinter in PyPy before Python 3.6 #6551 [nulano]
Do not use CCITTFaxDecode filter if libtiff is not available #6518 [radarhere]
Fallback to not using mmap if buffer is not large enough #6510 [radarhere]
๐ Fixed writing bytes as ASCII tag #6493 [radarhere]
Open 1 bit EPS in mode 1 #6499 [radarhere]
โ Removed support for tkinter before Python 1.5.2 #6549 [radarhere]
๐ Allow default ImageDraw font to be set #6484 [radarhere, hugovk]
๐พ Save 1 mode PDF using CCITTFaxDecode filter #6470 [radarhere]
โ Added support for RGBA PSD images #6481 [radarhere]
๐ Parse orientation from XMP tag contents #6463 [bigcat88, radarhere]
โ Added support for reading ATI1/ATI2 (BC4/BC5) DDS images #6457 [REDxEYE, radarhere]
Do not clear GIF tile when checking number of frames #6455 [radarhere]
๐ Support saving multiple MPO frames #6444 [radarhere]
Do not double quote Pillow version for setuptools >= 60 #6450 [radarhere]
โ Added ABGR BMP mask mode #6436 [radarhere]
๐ Fixed PSDraw rectangle #6429 [radarhere]
Raise ValueError if PNG sRGB chunk is truncated #6431 [radarhere]
๐ Handle missing Python executable in ImageShow on macOS #6416 [bryant1410, radarhere]
-
v9.2.0 Changes
July 01, 2022๐ Handle missing Python executable in ImageShow on macOS #6416 [bryant1410, radarhere]
๐ Deprecate ImageFont.getsize and related functions #6381 [nulano, radarhere]
๐ Fixed null check for fribidi_version_info in FriBiDi shim #6376 [nulano]
โ Added GIF decompression bomb check #6402 [radarhere]
๐ Handle PCF fonts files with less than 256 characters #6386 [dawidcrivelli, radarhere]
๐ Improved GIF optimize condition #6378 [raygard, radarhere]
Reverted to array_interface with the release of NumPy 1.23 #6394 [radarhere]
Pad PCX palette to 768 bytes when saving #6391 [radarhere]
๐ Fixed bug with rounding pixels to palette colors #6377 [btrekkie, radarhere]
๐ง Use gnome-screenshot on Linux if available #6361 [radarhere, nulano]
๐ Fixed loading L mode BMP RLE8 images #6384 [radarhere]
๐ Fixed incorrect operator in ImageCms error #6370 [LostBenjamin, hugovk, radarhere]
Limit FPX tile size to avoid extending outside image #6368 [radarhere]
โ Added support for decoding plain PPM formats #5242 [Piolie, radarhere]
โ Added apply_transparency() #6352 [radarhere]
๐ Fixed behaviour change from endian fix #6197 [radarhere]
๐ Allow remapping P images with RGBA palettes #6350 [radarhere]
๐ Fixed drawing translucent 1px high polygons #6278 [radarhere]
Pad COLORMAP to 768 items when saving TIFF #6232 [radarhere]
๐ Fix P -> PA conversion #6337 [RedShy, radarhere]
๐ Once exif data is parsed, do not reload unless it changes #6335 [radarhere]
Only try to connect discontiguous corners at the end of edges #6303 [radarhere]
๐ Improve transparency handling when saving GIF images #6176 [radarhere]
โก๏ธ Do not update GIF frame position until local image is found #6219 [radarhere]
Netscape GIF extension belongs after the global color table #6211 [radarhere]
Only write GIF comments at the beginning of the file #6300 [raygard, radarhere]
Separate multiple GIF comment blocks with newlines #6294 [raygard, radarhere]
Always use GIF89a for comments #6292 [raygard, radarhere]
Ignore compression value from BMP info dictionary when saving as TIFF #6231 [radarhere]
If font is file-like object, do not re-read from object to get variant #6234 [radarhere]
Raise ValueError when trying to access internal fp after close #6213 [radarhere]
๐ Support more affine expression forms in im.point() #6254 [benrg, radarhere]
Populate Python palette in fromarray() #6283 [radarhere]
Raise ValueError if PNG chunks are truncated #6253 [radarhere]
0๏ธโฃ Use durations from each frame by default when saving GIFs #6265 [radarhere]
Adjust BITSPERSAMPLE to match SAMPLESPERPIXEL when opening TIFFs #6270 [radarhere]
Search pkgconf system libs/cflags #6138 [jameshilliard, radarhere]
Raise ValueError for invalid PPM maxval #6242 [radarhere]
Corrected screencapture argument in ImageGrab.grab() #6244 [axt-one]
๐ Deprecate support for Qt 5 (PyQt5 and PySide2) #6237 [hugovk, radarhere]
๐ Increase wait time of temporary file deletion on Windows #6224 [AlexTedeschi]
๐ Deprecate FreeTypeFont.getmask2 fill parameter #6220 [nulano, radarhere, hugovk]
Round lut values where necessary #6188 [radarhere]
Load before getting size in resize() #6190 [radarhere]
Load image before performing size calculations in thumbnail() #6186 [radarhere]
๐ Deprecated PhotoImage.paste() box parameter #6178 [radarhere]
-
v9.1.1 Changes
May 17, 2022When reading past the end of a TGA scan line, reduce bytes left. CVE-2022-30595 [radarhere]
Do not open images with zero or negative height #6269 [radarhere]
-
v9.1.0 Changes
April 01, 2022โ Add support for multiple component transformation to JPEG2000 #5500 [scaramallion, radarhere, hugovk]
๐ Fix loading FriBiDi on Alpine #6165 [nulano]
โ Added setting for converting GIF P frames to RGB #6150 [radarhere]
๐ Allow 1 mode images to be inverted #6034 [radarhere]
Raise ValueError when trying to save empty JPEG #6159 [radarhere]
๐ง Always save TIFF with contiguous planar configuration #5973 [radarhere]
Connected discontiguous polygon corners #5980 [radarhere]
Ensure Tkinter hook is activated for getimage() #6032 [radarhere]
๐ Use screencapture arguments to crop on macOS #6152 [radarhere]
Do not mark L mode JPEG as 1 bit in PDF #6151 [radarhere]
โ Added support for reading I;16R TIFF images #6132 [radarhere]
๐ If an error occurs after creating a file, remove the file #6134 [radarhere]
๐ Fixed calling DisplayViewer or XVViewer without a title #6136 [radarhere]
Retain RGBA transparency when saving multiple GIF frames #6128 [radarhere]
๐พ Save additional ICO frames with other bit depths if supplied #6122 [radarhere]
๐ Handle EXIF data truncated to just the header #6124 [radarhere]
โ Added support for reading BMP images with RLE8 compression #6102 [radarhere]
๐ Support Python distributions where _tkinter is compiled in #6006 [lukegb]
โ Added support for PPM arbitrary maxval #6119 [radarhere]
โ Added BigTIFF reading #6097 [radarhere]
When converting, clip I;16 to be unsigned, not signed #6112 [radarhere]
๐ Fixed loading L mode GIF with transparency #6086 [radarhere]
๐ Improved handling of PPM header #5121 [Piolie, radarhere]
๐ Reset size when seeking away from "Large Thumbnail" MPO frame #6101 [radarhere]
Replace requirements.txt with extras #6072 [hugovk, radarhere]
โ Added PyEncoder and support BLP saving #6069 [radarhere]
๐ Handle TGA images with packets that cross scan lines #6087 [radarhere]
โ Added FITS reading #6056 [radarhere, hugovk]
โ Added rawmode argument to Image.getpalette() #6061 [radarhere]
๐ Fixed BUFR, GRIB and HDF5 stub saving #6071 [radarhere]
๐ Do not automatically remove temporary ImageShow files on Unix #6045 [radarhere]
Correctly read JPEG compressed BLP images #4685 [Meithal, radarhere]
Merged _MODE_CONV typ into ImageMode as typestr #6057 [radarhere]
Consider palette size when converting and in getpalette() #6060 [radarhere]
โ Added enums #5954 [radarhere]
Ensure image is opaque after converting P to PA with RGB palette #6052 [radarhere]
Attach RGBA palettes from putpalette() when suitable #6054 [radarhere]
Added get_photoshop_blocks() to parse Photoshop TIFF tag #6030 [radarhere]
โฌ๏ธ Drop excess values in BITSPERSAMPLE #6041 [mikhail-iurkov]
โ Added unpacker from RGBA;15 to RGB #6031 [radarhere]
๐ Enable arm64 for MSVC on Windows #5811 [gaborkertesz-linaro, gaborkertesz]
Keep IPython/Jupyter text/plain output stable #5891 [shamrin, radarhere]
Raise an error when performing a negative crop #5972 [radarhere, hugovk]
๐ Deprecated show_file "file" argument in favour of "path" #5959 [radarhere]
๐ Fixed SPIDER images for use with Bio-formats library #5956 [radarhere]
Ensure duplicated file pointer is closed #5946 [radarhere]
โ Added specific error if path coordinate type is incorrect #5942 [radarhere]
โ Return an empty bytestring from tobytes() for an empty image #5938 [radarhere]
Remove readonly from Image.eq #5930 [hugovk]
-
v9.0.1 Changes
February 03, 2022๐ In show_file, use os.remove to remove temporary images. CVE-2022-24303 #6010 [radarhere, hugovk]
Restrict builtins within lambdas for ImageMath.eval. CVE-2022-22817 #6009 [radarhere]
-
v9.0.0 Changes
January 02, 2022Restrict builtins for ImageMath.eval(). CVE-2022-22817 #5923 [radarhere]
๐ Ensure JpegImagePlugin stops at the end of a truncated file #5921 [radarhere]
๐ Fixed ImagePath.Path array handling. CVE-2022-22815, CVE-2022-22816 #5920 [radarhere]
โ Remove consecutive duplicate tiles that only differ by their offset #5919 [radarhere]
๐ Improved I;16 operations on big endian #5901 [radarhere]
Limit quantized palette to number of colors #5879 [radarhere]
๐ Fixed palette index for zeroed color in FASTOCTREE quantize #5869 [radarhere]
When saving RGBA to GIF, make use of first transparent palette entry #5859 [radarhere]
Pass SAMPLEFORMAT to libtiff #5848 [radarhere]
โ Added rounding when converting P and PA #5824 [radarhere]
๐ Improved putdata() documentation and data handling #5910 [radarhere]
Exclude carriage return in PDF regex to help prevent ReDoS #5912 [hugovk]
๐ Fixed freeing pointer in ImageDraw.Outline.transform #5909 [radarhere]
โ Added ImageShow support for xdg-open #5897 [m-shinder, radarhere]
๐ Support 16-bit grayscale ImageQt conversion #5856 [cmbruns, radarhere]
Convert subsequent GIF frames to RGB or RGBA #5857 [radarhere]
Do not prematurely return in ImageFile when saving to stdout #5665 [infmagic2047, radarhere]
โ Added support for top right and bottom right TGA orientations #5829 [radarhere]
Corrected ICNS file length in header #5845 [radarhere]
Block tile TIFF tags when saving #5839 [radarhere]
โ Added line width argument to polygon #5694 [radarhere]
Do not redeclare class each time when converting to NumPy #5844 [radarhere]
Only prevent repeated polygon pixels when drawing with transparency #5835 [radarhere]
โ Add support for pickling TrueType fonts #5826 [hugovk, radarhere]
๐ Only prefer command line tools SDK on macOS over default MacOSX SDK #5828 [radarhere]
โฌ๏ธ Drop support for soon-EOL Python 3.6 #5768 [hugovk, nulano, radarhere]
๐ Fix compilation on 64-bit Termux #5793 [landfillbaby]
๐ Use title for display in ImageShow #5788 [radarhere]
โ Remove support for FreeType 2.7 and older #5777 [hugovk, radarhere]
๐ Fix for PyQt6 #5775 [hugovk, radarhere]
๐ Removed deprecated PILLOW_VERSION, Image.show command parameter, Image._showxv and ImageFile.raise_ioerror #5776 [radarhere]
-
v8.4.0 Changes
October 15, 2021Prefer global transparency in GIF when replacing with background color #5756 [radarhere]
โ Added "exif" keyword argument to TIFF saving #5575 [radarhere]
Copy Python palette to new image in quantize() #5696 [radarhere]
Read ICO AND mask from end #5667 [radarhere]
Actually check the framesize in FliDecode.c #5659 [wiredfool]
Determine JPEG2000 mode purely from ihdr header box #5654 [radarhere]
๐ Fixed using info dictionary when writing multiple APNG frames #5611 [radarhere]
๐ Allow saving 1 and L mode TIFF with PhotometricInterpretation 0 #5655 [radarhere]
For GIF save_all with palette, do not include palette with each frame #5603 [radarhere]
Keep transparency when converting from P to LA or PA #5606 [radarhere]
Copy palette to new image in transform() #5647 [radarhere]
โ Added "transparency" argument to EpsImagePlugin load() #5620 [radarhere]
Corrected pathlib.Path detection when saving #5633 [radarhere]
โ Added WalImageFile class #5618 [radarhere]
Consider I;16 pixel size when drawing text #5598 [radarhere]
0๏ธโฃ If default conversion from P is RGB with transparency, convert to RGBA #5594 [radarhere]
Speed up rotating square images by 90 or 270 degrees #5646 [radarhere]
โ Add support for reading DPI information from JPEG2000 images [rogermb, radarhere]
Catch TypeError from corrupted DPI value in EXIF #5639 [homm, radarhere]
Do not close file pointer when saving SGI images #5645 [farizrahman4u, radarhere]
๐ Deprecate ImagePalette size parameter #5641 [radarhere, hugovk]
๐ Prefer command line tools SDK on macOS #5624 [radarhere]
โ Added tags when saving YCbCr TIFF #5597 [radarhere]
PSD layer count may be negative #5613 [radarhere]
๐ Fixed ImageOps expand with tuple border on P image #5615 [radarhere]
๐ Fixed error saving APNG with duplicate frames and different duration times #5609 [thak1411, radarhere]
-
v8.3.2 Changes
September 02, 2021CVE-2021-23437 Raise ValueError if color specifier is too long [hugovk, radarhere]
๐ Fix 6-byte OOB read in FliDecode [wiredfool]
โ Add support for Python 3.10 #5569, #5570 [hugovk, radarhere]
Ensure TIFF
RowsPerStrip
is multiple of 8 for JPEG compression #5588 [kmilos, radarhere]โก๏ธ Updates for
ImagePalette
channel order #5599 [radarhere]Hide FriBiDi shim symbols to avoid conflict with real FriBiDi library #5651 [nulano]
-
v8.3.1 Changes
July 06, 2021Catch OSError when checking if fp is sys.stdout #5585 [radarhere]
๐ Handle removing orientation from alternate types of EXIF data #5584 [radarhere]
Make Image.array take optional dtype argument #5572 [t-vi, radarhere]
-
v8.3.0 Changes
July 01, 2021๐จ Use snprintf instead of sprintf. CVE-2021-34552 #5567 [radarhere]
Limit TIFF strip size when saving with LibTIFF #5514 [kmilos]
๐ Allow ICNS save on all operating systems #4526 [baletu, radarhere, newpanjing, hugovk]
De-zigzag JPEG's DQT when loading; deprecate convert_dict_qtables #4989 [gofr, radarhere]
Replaced xml.etree.ElementTree #5565 [radarhere]
๐ Moved CVE image to pillow-depends #5561 [radarhere]
โ Added tag data for IFD groups #5554 [radarhere]
๐ Improved ImagePalette #5552 [radarhere]
โ Add DDS saving #5402 [radarhere]
๐ Improved getxmp() #5455 [radarhere]
Convert to float for comparison with float in IFDRational eq #5412 [radarhere]
๐ Allow getexif() to access TIFF tag_v2 data #5416 [radarhere]
Read FITS image mode and size #5405 [radarhere]
๐ Merge parallel horizontal edges in ImagingDrawPolygon #5347 [radarhere, hrdrq]
๐ Use transparency behind first GIF frame and when disposing to background #5557 [radarhere, zewt]
Avoid unstable nature of qsort in Quant.c #5367 [radarhere]
Copy palette to new images in ImageOps expand #5551 [radarhere]
Ensure palette string matches RGB mode #5549 [radarhere]
Do not modify EXIF of original image instance in exif_transpose() #5547 [radarhere]
๐ Fixed default numresolution for small JPEG2000 images #5540 [radarhere]
โ Added DDS BC5 reading #5501 [radarhere]
Raise an error if ImageDraw.textbbox is used without a TrueType font #5510 [radarhere]
โ Added ICO saving in BMP format #5513 [radarhere]
๐ Ensure PNG seeks to end of previous chunk at start of load_end #5493 [radarhere]
๐ Do not allow TIFF to seek to a past frame #5473 [radarhere]
Avoid race condition when displaying images with eog #5507 [mconst]
โ Added specific error messages when ink has incorrect number of bands #5504 [radarhere]
๐ Allow converting an image to a numpy array to raise errors #5379 [radarhere]
โ Removed DPI rounding from BMP, JPEG, PNG and WMF loading #5476, #5470 [radarhere]
โ Remove spikes when drawing thin pieslices #5460 [xtsm]
โก๏ธ Updated default value for SAMPLESPERPIXEL TIFF tag #5452 [radarhere]
โ Removed TIFF DPI rounding #5446 [radarhere, hugovk]
Include code in WebP error #5471 [radarhere]
Do not alter pixels outside mask when drawing text on an image with transparency #5434 [radarhere]
๐ Reset handle when seeking backwards in TIFF #5443 [radarhere]
Replace sys.stdout with sys.stdout.buffer when saving #5437 [radarhere]
๐ Fixed UNDEFINED TIFF tag of length 0 being changed in roundtrip #5426 [radarhere]
๐ Fixed bug when checking FreeType2 version if it is not installed #5445 [radarhere]
Do not round dimensions when saving PDF #5459 [radarhere]
โ Added ImageOps contain() #5417 [radarhere, hugovk]
๐ Changed WebP default "method" value to 4 #5450 [radarhere]
Switched to saving 1-bit PDFs with DCTDecode #5430 [radarhere]
๐ Use bpp from ICO header #5429 [radarhere]
Corrected JPEG APP14 transform value #5408 [radarhere]
๐ Changed TIFF tag 33723 length to 1 #5425 [radarhere]
๐ Changed ImageMorph incorrect mode errors to ValueError #5414 [radarhere]
โ Add EXIF tags specified in EXIF 2.32 #5419 [gladiusglad]
Treat previous contents of first GIF frame as transparent #5391 [radarhere]
โช For special image modes, revert default resize resampling to NEAREST #5411 [radarhere]
๐ JPEG2000: Support decoding subsampled RGB and YCbCr images #4996 [nulano, radarhere]
Stop decoding BC1 punchthrough alpha in BC2&3 #4144 [jansol]
๐ Use zero if GIF background color index is missing #5390 [radarhere]
๐ Fixed ensuring that GIF previous frame was loaded #5386 [radarhere]
๐ Valgrind fixes #5397 [wiredfool]
Round down the radius in rounded_rectangle #5382 [radarhere]
๐ Fixed reading uncompressed RGB data from DDS #5383 [radarhere]