pillow v9.3.0 Release Notes

Release Date: 2022-10-29 // over 1 year 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]