pillow v9.3.0 Release Notes
Release Date: 2022-10-29 // 7 months ago-
Limit 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]
Previous changes from v9.2.0
-
๐ 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]