Changelog
### 11.0.0
```
-------------------
- Update licence to MIT-CMU 8460
[hugovk]
- Conditionally define ImageCms type hint to avoid requiring core 8197
[radarhere]
- Support writing LONG8 offsets in AppendingTiffWriter 8417
[radarhere]
- Use ImageFile.MAXBLOCK when saving TIFF images 8461
[radarhere]
- Do not close provided file handles with libtiff when saving 8458
[radarhere]
- Support ImageFilter.BuiltinFilter for I;16* images 8438
[radarhere]
- Use ImagingCore.ptr instead of ImagingCore.id 8341
[homm, radarhere, hugovk]
- Updated EPS mode when opening images without transparency 8281
[Yay295, radarhere]
- Use transparency when combining P frames from APNGs 8443
[radarhere]
- Support all resampling filters when resizing I;16* images 8422
[radarhere]
- Free memory on early return 8413
[radarhere]
- Cast int before potentially exceeding INT_MAX 8402
[radarhere]
- Check image value before use 8400
[radarhere]
- Improved copying imagequant libraries 8420
[radarhere]
- Use Capsule for WebP saving 8386
[homm, radarhere]
- Fixed writing multiple StripOffsets to TIFF 8317
[Yay295, radarhere]
- Fix dereference before checking for NULL in ImagingTransformAffine 8398
[PavlNekrasov]
- Use transposed size after opening for TIFF images 8390
[radarhere, homm]
- Improve ImageFont error messages 8338
[yngvem, radarhere, hugovk]
- Mention MAX_TEXT_CHUNK limit in PNG error message 8391
[radarhere]
- Cast Dib handle to int 8385
[radarhere]
- Accept float stroke widths 8369
[radarhere]
- Deprecate ICNS (width, height, scale) sizes in favour of load(scale) 8352
[radarhere]
- Improved handling of RGBA palettes when saving GIF images 8366
[radarhere]
- Deprecate isImageType 8364
[radarhere]
- Support converting more modes to LAB by converting to RGBA first 8358
[radarhere]
- Deprecate support for FreeType 2.9.0 8356
[hugovk, radarhere]
- Removed unused TiffImagePlugin IFD_LEGACY_API 8355
[radarhere]
- Handle duplicate EXIF header 8350
[zakajd, radarhere]
- Return early from BoxBlur if either width or height is zero 8347
[radarhere]
- Check text is either string or bytes 8308
[radarhere]
- Added writing XMP bytes to JPEG 8286
[radarhere]
- Support JPEG2000 RGBA palettes 8256
[radarhere]
- Expand C image to match GIF frame image size 8237
[radarhere]
- Allow saving I;16 images as PPM 8231
[radarhere]
- When IFD is missing, connect get_ifd() dictionary to Exif 8230
[radarhere]
- Skip truncated ICO mask if LOAD_TRUNCATED_IMAGES is enabled 8180
[radarhere]
- Treat unknown JPEG2000 colorspace as unspecified 8343
[radarhere]
- Updated error message when saving WebP with invalid width or height 8322
[radarhere, hugovk]
- Remove warning if NumPy failed to raise an error during conversion 8326
[radarhere]
- If left and right sides meet in ImageDraw.rounded_rectangle(), do not draw rectangle to fill gap 8304
[radarhere]
- Remove WebP support without anim, mux/demux, and with buggy alpha 8213
[homm, radarhere]
- Add missing TIFF CMYK;16B reader 8298
[homm]
- Remove all WITH_* flags from _imaging.c and other flags 8211
[homm]
- Improve ImageDraw2 shape methods 8265
[radarhere]
- Lock around usages of imaging memory arenas 8238
[lysnikolaou]
- Deprecate JpegImageFile huffman_ac and huffman_dc 8274
[radarhere]
- Deprecate ImageMath lambda_eval and unsafe_eval options argument 8242
[radarhere]
- Changed ContainerIO to subclass IO 8240
[radarhere]
- Move away from APIs that use borrowed references under the free-threaded build 8216
[hugovk, lysnikolaou]
- Allow size argument to resize() to be a NumPy array 8201
[radarhere]
- Drop support for Python 3.8 8183
[hugovk, radarhere]
- Add support for Python 3.13 8181
[hugovk, radarhere]
- Fix incompatibility with NumPy 1.20 8187
[neutrinoceros, radarhere]
- Remove PSFile, PyAccess and USE_CFFI_ACCESS 8182
[hugovk, radarhere]
```
### 10.4.0
```
-------------------
- Raise FileNotFoundError if show_file() path does not exist 8178
[radarhere]
- Improved reading 16-bit TGA images with colour 7965
[Yay295, radarhere]
- Deprecate non-image ImageCms modes 8031
[radarhere]
- Fixed processing multiple JPEG EXIF markers 8127
[radarhere]
- Do not preserve EXIFIFD tag by default when saving TIFF images 8110
[radarhere]
- Added ImageFont.load_default_imagefont() 8086
[radarhere]
- Added Image.WARN_POSSIBLE_FORMATS 8063
[radarhere]
- Remove zero-byte end padding when parsing any XMP data 8171
[radarhere]
- Do not detect Ultra HDR images as MPO 8056
[radarhere]
- Raise SyntaxError specific to JP2 8146
[Yay295, radarhere]
- Do not use first frame duration for other frames when saving APNG images 8104
[radarhere]
- Consider I;16 pixel size when using a 1 mode mask 8112
[radarhere]
- When saving multiple PNG frames, convert to mode rather than raw mode 8087
[radarhere]
- Added byte support to FreeTypeFont 8141
[radarhere]
- Allow float center for rotate operations 8114
[radarhere]
- Do not read layers immediately when opening PSD images 8039
[radarhere]
- Restore original thread state 8065
[radarhere]
- Read IM and TIFF images as RGB, rather than RGBX 7997
[radarhere]
- Only preserve TIFF IPTC_NAA_CHUNK tag if type is BYTE or UNDEFINED 7948
[radarhere]
- Clarify ImageDraw2 error message when size is missing 8165
[radarhere]
- Support unpacking more rawmodes to RGBA palettes 7966
[radarhere]
- Removed support for Qt 5 8159
[radarhere]
- Improve ``ImageFont.freetype`` support for XDG directories on Linux 8135
[mamg22, radarhere]
- Improved consistency of XMP handling 8069
[radarhere]
- Use pkg-config to help find libwebp and raqm 8142
[radarhere]
- Accept 't' suffix for libtiff version 8126, 8129
[radarhere]
- Deprecate ImageDraw.getdraw hints parameter 8124
[radarhere, hugovk]
- Added ImageDraw circle() 8085
[void4, hugovk, radarhere]
- Add mypy target to Makefile 8077
[Yay295]
- Added more modes to Image.MODES 7984
[radarhere]
- Deprecate BGR;15, BGR;16 and BGR;24 modes 7978
[radarhere, hugovk]
- Fix ImagingAccess for I;16N on big-endian 7921
[Yay295, radarhere]
- Support reading P mode TIFF images with padding 7996
[radarhere]
- Deprecate support for libtiff < 4 7998
[radarhere, hugovk]
- Corrected ImageShow UnixViewer command 7987
[radarhere]
- Use functools.cached_property in ImageStat 7952
[nulano, hugovk, radarhere]
- Add support for reading BITMAPV2INFOHEADER and BITMAPV3INFOHEADER 7956
[Cirras, radarhere]
- Support reading CMYK JPEG2000 images 7947
[radarhere]
```
### 10.3.0
```
-------------------
- CVE-2024-28219: Use ``strncpy`` to avoid buffer overflow 7928
[radarhere, hugovk]
- Deprecate ``eval()``, replacing it with ``lambda_eval()`` and ``unsafe_eval()`` 7927
[radarhere, hugovk]
- Raise ``ValueError`` if seeking to greater than offset-sized integer in TIFF 7883
[radarhere]
- Add ``--report`` argument to ``__main__.py`` to omit supported formats 7818
[nulano, radarhere, hugovk]
- Added RGB to I;16, I;16L, I;16B and I;16N conversion 7918, 7920
[radarhere]
- Fix editable installation with custom build backend and configuration options 7658
[nulano, radarhere]
- Fix putdata() for I;16N on big-endian 7209
[Yay295, hugovk, radarhere]
- Determine MPO size from markers, not EXIF data 7884
[radarhere]
- Improved conversion from RGB to RGBa, LA and La 7888
[radarhere]
- Support FITS images with GZIP_1 compression 7894
[radarhere]
- Use I;16 mode for 9-bit JPEG 2000 images 7900
[scaramallion, radarhere]
- Raise ValueError if kmeans is negative 7891
[radarhere]
- Remove TIFF tag OSUBFILETYPE when saving using libtiff 7893
[radarhere]
- Raise ValueError for negative values when loading P1-P3 PPM images 7882
[radarhere]
- Added reading of JPEG2000 palettes 7870
[radarhere]
- Added alpha_quality argument when saving WebP images 7872
[radarhere]
- Fixed joined corners for ImageDraw rounded_rectangle() non-integer dimensions 7881
[radarhere]
- Stop reading EPS image at EOF marker 7753
[radarhere]
- PSD layer co-ordinates may be negative 7706
[radarhere]
- Use subprocess with CREATE_NO_WINDOW flag in ImageShow WindowsViewer 7791
[radarhere]
- When saving GIF frame that restores to background color, do not fill identical pixels 7788
[radarhere]
- Fixed reading PNG iCCP compression method 7823
[radarhere]
- Allow writing IFDRational to UNDEFINED tag 7840
[radarhere]
- Fix logged tag name when loading Exif data 7842
[radarhere]
- Use maximum frame size in IHDR chunk when saving APNG images 7821
[radarhere]
- Prevent opening P TGA images without a palette 7797
[radarhere]
- Use palette when loading ICO images 7798
[radarhere]
- Use consistent arguments for load_read and load_seek 7713
[radarhere]
- Turn off nullability warnings for macOS SDK 7827
[radarhere]
- Fix shift-sign issue in Convert.c 7838
[r-barnes, radarhere]
- Open 16-bit grayscale PNGs as I;16 7849
[radarhere]
- Handle truncated chunks at the end of PNG images 7709
[lajiyuan, radarhere]
- Match mask size to pasted image size in GifImagePlugin 7779
[radarhere]
- Release GIL while calling ``WebPAnimDecoderGetNext`` 7782
[evanmiller, radarhere]
- Fixed reading FLI/FLC images with a prefix chunk 7804
[twolife]
- Update wl-paste handling and return None for some errors in grabclipboard() on Linux 7745
[nik012003, radarhere]
- Remove execute bit from ``setup.py`` 7760
[hugovk]
- Do not support using test-image-results to upload images after test failures 7739
[radarhere]
- Changed ImageMath.ops to be static 7721
[radarhere]
- Fix APNG info after seeking backwards more than twice 7701
[esoma, radarhere]
- Deprecate ImageCms constants and versions() function 7702
[nulano, radarhere]
- Added PerspectiveTransform 7699
[radarhere]
- Add support for reading and writing grayscale PFM images 7696
[nulano, hugovk]
- Add LCMS2 flags to ImageCms 7676
[nulano, radarhere, hugovk]
- Rename x64 to AMD64 in winbuild 7693
[nulano]
```
### 10.2.0
```
-------------------
- Add ``keep_rgb`` option when saving JPEG to prevent conversion of RGB colorspace 7553
[bgilbert, radarhere]
- Trim glyph size in ImageFont.getmask() 7669, 7672
[radarhere, nulano]
- Deprecate IptcImagePlugin helpers 7664
[nulano, hugovk, radarhere]
- Allow uncompressed TIFF images to be saved in chunks 7650
[radarhere]
- Concatenate multiple JPEG EXIF markers 7496
[radarhere]
- Changed IPTC tile tuple to match other plugins 7661
[radarhere]
- Do not assign new fp attribute when exiting context manager 7566
[radarhere]
- Support arbitrary masks for uncompressed RGB DDS images 7589
[radarhere, akx]
- Support setting ROWSPERSTRIP tag 7654
[radarhere]
- Apply ImageFont.MAX_STRING_LENGTH to ImageFont.getmask() 7662
[radarhere]
- Optimise ``ImageColor`` using ``functools.lru_cache`` 7657
[hugovk]
- Restricted environment keys for ImageMath.eval() 7655
[wiredfool, radarhere]
- Optimise ``ImageMode.getmode`` using ``functools.lru_cache`` 7641
[hugovk, radarhere]
- Fix incorrect color blending for overlapping glyphs 7497
[ZachNagengast, nulano, radarhere]
- Attempt memory mapping when tile args is a string 7565
[radarhere]
- Fill identical pixels with transparency in subsequent frames when saving GIF 7568
[radarhere]
- Corrected duration when combining multiple GIF frames into single frame 7521
[radarhere]
- Handle disposing GIF background from outside palette 7515
[radarhere]
- Seek past the data when skipping a PSD layer 7483
[radarhere]
- Import plugins relative to the module 7576
[deliangyang, jaxx0n]
- Translate encoder error codes to strings; deprecate ``ImageFile.raise_oserror()`` 7609
[bgilbert, radarhere]
- Support reading BC4U and DX10 BC1 images 6486
[REDxEYE, radarhere, hugovk]
- Optimize ImageStat.Stat.extrema 7593
[florath, radarhere]
- Handle pathlib.Path in FreeTypeFont 7578
[radarhere, hugovk, nulano]
- Added support for reading DX10 BC4 DDS images 7603
[sambvfx, radarhere]
- Optimized ImageStat.Stat.count 7599
[florath]
- Correct PDF palette size when saving 7555
[radarhere]
- Fixed closing file pointer with olefile 0.47 7594
[radarhere]
- Raise ValueError when TrueType font size is not greater than zero 7584, 7587
[akx, radarhere]
- If absent, do not try to close fp when closing image 7557
[RaphaelVRossi, radarhere]
- Allow configuring JPEG restart marker interval on save 7488
[bgilbert, radarhere]
- Decrement reference count for PyObject 7549
[radarhere]
- Implement ``streamtype=1`` option for tables-only JPEG encoding 7491
[bgilbert, radarhere]
- If save_all PNG only has one frame, do not create animated image 7522
[radarhere]
- Fixed frombytes() for images with a zero dimension 7493
[radarhere]
```
### 10.1.0
```
-------------------
- Added TrueType default font to allow for different sizes 7354
[radarhere]
- Fixed invalid argument warning 7442
[radarhere]
- Added ImageOps cover method 7412
[radarhere, hugovk]
- Catch struct.error from truncated EXIF when reading JPEG DPI 7458
[radarhere]
- Consider default image when selecting mode for PNG save_all 7437
[radarhere]
- Support BGR;15, BGR;16 and BGR;24 access, unpacking and putdata 7303
[radarhere]
- Added CMYK to RGB unpacker 7310
[radarhere]
- Improved flexibility of XMP parsing 7274
[radarhere]
- Support reading 8-bit YCbCr TIFF images 7415
[radarhere]
- Allow saving I;16B images as PNG 7302
[radarhere]
- Corrected drawing I;16 points and writing I;16 text 7257
[radarhere]
- Set blue channel to 128 for BC5S 7413
[radarhere]
- Increase flexibility when reading IPTC fields 7319
[radarhere]
- Set C palette to be empty by default 7289
[radarhere]
- Added gs_binary to control Ghostscript use on all platforms 7392
[radarhere]
- Read bounding box information from the trailer of EPS files if specified 7382
[nopperl, radarhere]
- Added reading 8-bit color DDS images 7426
[radarhere]
- Added has_transparency_data 7420
[radarhere, hugovk]
- Fixed bug when reading BC5S DDS images 7401
[radarhere]
- Prevent TIFF orientation from being applied more than once 7383
[radarhere]
- Use previous pixel alpha for QOI_OP_RGB 7357
[radarhere]
- Added BC5U reading 7358
[radarhere]
- Allow getpixel() to accept a list 7355
[radarhere, homm]
- Allow GaussianBlur and BoxBlur to accept a sequence of x and y radii 7336
[radarhere]
- Expand JPEG buffer size when saving optimized or progressive 7345
[radarhere]
- Added session type check for Linux in ImageGrab.grabclipboard() 7332
[TheNooB2706, radarhere, hugovk]
- Allow "loop=None" when saving GIF images 7329
[radarhere]
- Fixed transparency when saving P mode images to PDF 7323
[radarhere]
- Added saving LA images as PDFs 7299
[radarhere]
- Set SMaskInData to 1 for PDFs with alpha 7316, 7317
[radarhere]
- Changed Image mode property to be read-only by default 7307
[radarhere]
- Silence exceptions in _repr_jpeg_ and _repr_png_ 7266
[mtreinish, radarhere]
- Do not use transparency when saving GIF if it has been removed when normalizing mode 7284
[radarhere]
- Fix missing symbols when libtiff depends on libjpeg 7270
[heitbaum]
```
### 10.0.1
```
-------------------
- Updated libwebp to 1.3.2 7395
[radarhere]
- Updated zlib to 1.3 7344
[radarhere]
```
### 10.0.0
```
-------------------
- Fixed deallocating mask images 7246
[radarhere]
- Added ImageFont.MAX_STRING_LENGTH 7244
[radarhere, hugovk]
- Fix Windows build with pyproject.toml 7230
[hugovk, nulano, radarhere]
- Do not close provided file handles with libtiff 7199
[radarhere]
- Convert to HSV if mode is HSV in getcolor() 7226
[radarhere]
- Added alpha_only argument to getbbox() 7123
[radarhere. hugovk]
- Prioritise speed in _repr_png_ 7242
[radarhere]
- Do not use CFFI access by default on PyPy 7236
[radarhere]
- Limit size even if one dimension is zero in decompression bomb check 7235
[radarhere]
- Use --config-settings instead of deprecated --global-option 7171
[radarhere]
- Better C integer definitions 6645
[Yay295, hugovk]
- Fixed finding dependencies on Cygwin 7175
[radarhere]
- Changed grabclipboard() to use PNG instead of JPG compression on macOS 7219
[abey79, radarhere]
- Added in_place argument to ImageOps.exif_transpose() 7092
[radarhere]
- Fixed calling putpalette() on L and LA images before load() 7187
[radarhere]
- Fixed saving TIFF multiframe images with LONG8 tag types 7078
[radarhere]
- Fixed combining single duration across duplicate APNG frames 7146
[radarhere]
- Remove temporary file when error is raised 7148
[radarhere]
- Do not use temporary file when grabbing clipboard on Linux 7200
[radarhere]
- If the clipboard fails to open on Windows, wait and try again 7141
[radarhere]
- Fixed saving multiple 1 mode frames to GIF 7181
[radarhere]
- Replaced absolute PIL import with relative import 7173
[radarhere]
- Replaced deprecated Py_FileSystemDefaultEncoding for Python >= 3.12 7192
[radarhere]
- Improved wl-paste mimetype handling in ImageGrab 7094
[rrcgat, radarhere]
- Added _repr_jpeg_() for IPython display_jpeg 7135
[n3011, radarhere, nulano]
- Use "/sbin/ldconfig" if ldconfig is not found 7068
[radarhere]
- Prefer screenshots using XCB over gnome-screenshot 7143
[nulano, radarhere]
- Fixed joined corners for ImageDraw rounded_rectangle() odd dimensions 7151
[radarhere]
- Support reading signed 8-bit TIFF images 7111
[radarhere]
- Added width argument to ImageDraw regular_polygon 7132
[radarhere]
- Support I mode for ImageFilter.BuiltinFilter 7108
[radarhere]
- Raise error from stderr of Linux ImageGrab.grabclipboard() command 7112
[radarhere]
- Added unpacker from I;16B to I;16 7125
[radarhere]
- Support float font sizes 7107
[radarhere]
- Use later value for duplicate xref entries in PdfParser 7102
[radarhere]
- Load before getting size in __getstate__ 7105
[bigcat88, radarhere]
- Fixed type handling for include and lib directories 7069
[adisbladis, radarhere]
- Remove deprecations for Pillow 10.0.0 7059, 7080
[hugovk, radarhere]
- Drop support for soon-EOL Python 3.7 7058
[hugovk, radarhere]
```
### 9.5.0
```
------------------
- Added ImageSourceData to TAGS_V2 7053
[radarhere]
- Clear PPM half token after use 7052
[radarhere]
- Removed absolute path to ldconfig 7044
[radarhere]
- Support custom comments and PLT markers when saving JPEG2000 images 6903
[joshware, radarhere, hugovk]
- Load before getting size in __array_interface__ 7034
[radarhere]
- Support creating BGR;15, BGR;16 and BGR;24 images, but drop support for BGR;32 7010
[radarhere]
- Consider transparency when applying APNG blend mask 7018
[radarhere]
- Round duration when saving animated WebP images 6996
[radarhere]
- Added reading of JPEG2000 comments 6909
[radarhere]
- Decrement reference count 7003
[radarhere, nulano]
- Allow libtiff_support_custom_tags to be missing 7020
[radarhere]
- Improved I;16N support 6834
[radarhere]
- Added QOI reading 6852
[radarhere, hugovk]
- Added saving RGBA images as PDFs 6925
[radarhere]
- Do not raise an error if os.environ does not contain PATH 6935
[radarhere, hugovk]
- Close OleFileIO instance when closing or exiting FPX or MIC 7005
[radarhere]
- Added __int__ to IFDRational for Python >= 3.11 6998
[radarhere]
- Added memoryview support to Dib.frombytes() 6988
[radarhere, nulano]
- Close file pointer copy in the libtiff encoder if still open 6986
[fcarron, radarhere]
- Raise an error if ImageDraw co-ordinates are incorrectly ordered 6978
[radarhere]
- Added "corners" argument to ImageDraw rounded_rectangle() 6954
[radarhere]
- Added memoryview support to frombytes() 6974
[radarhere]
- Allow comments in FITS images 6973
[radarhere]
- Support saving PDF with different X and Y resolutions 6961
[jvanderneutstulen, radarhere, hugovk]
- Fixed writing int as UNDEFINED tag 6950
[radarhere]
- Raise an error if EXIF data is too long when saving JPEG 6939
[radarhere]
- Handle more than one directory returned by pkg-config 6896
[sebastic, radarhere]
- Do not retry past formats when loading all formats for the first time 6902
[radarhere]
- Do not retry specified formats if they failed when opening 6893
[radarhere]
- Do not unintentionally load TIFF format at first 6892
[radarhere]
- Stop reading when EPS line becomes too long 6897
[radarhere]
- Allow writing IFDRational to BYTE tag 6890
[radarhere]
- Raise ValueError for BoxBlur filter with negative radius 6874
[hugovk, radarhere]
- Support arbitrary number of loaded modules on Windows 6761
[javidcf, radarhere, nulano]
```
### 9.4.0
```
------------------
- Fixed null pointer dereference crash with malformed font 6846
[wiredfool, radarhere]
- Return from ImagingFill early if image has a zero dimension 6842
[radarhere]
- Reversed deprecations for Image constants, except for duplicate Resampling attributes 6830
[radarhere]
- Improve exception traceback readability 6836
[hugovk, radarhere]
- Do not attempt to read IFD1 if absent 6840
[radarhere]
- Fixed writing int as ASCII tag 6800
[radarhere]
- If available, use wl-paste or xclip for grabclipboard() on Linux 6783
[radarhere]
- Added signed option when saving JPEG2000 images 6709
[radarhere]
- Patch OpenJPEG to include ARM64 fix 6718
[radarhere]
- Added support for I;16 modes in putdata() 6825
[radarhere]
- Added conversion from RGBa to RGB 6708
[radarhere]
- Added DDS support for uncompressed L and LA images 6820
[radarhere, REDxEYE]
- Added LightSource tag values to ExifTags 6749
[radarhere]
- Fixed PyAccess after changing ICO size 6821
[radarhere]
- Do not use EXIF from info when saving PNG images 6819
[radarhere]
- Fixed saving EXIF data to MPO 6817
[radarhere]
- Added Exif hide_offsets() 6762
[radarhere]
- Only compare to previous frame when checking for duplicate GIF frames while saving 6787
[radarhere]
- Always initialize all plugins in registered_extensions() 6811
[radarhere]
- Ignore non-opaque WebP background when saving as GIF 6792
[radarhere]
- Only set tile in ImageFile __setstate__ 6793
[radarhere]
- When reading BLP, do not trust JPEG decoder to determine image is CMYK 6767
[radarhere]
- Added IFD enum to ExifTags 6748
[radarhere]
- Fixed bug combining GIF frame durations 6779
[radarhere]
- Support saving JPEG comments 6774
[smason, radarhere]
- Added getxmp() to WebPImagePlugin 6758
[radarhere]
- Added "exact" option when saving WebP 6747
[ashafaei, radarhere]
- Use fractional coordinates when drawing text 6722
[radarhere]
- Fixed writing int as BYTE tag 6740
[radarhere]
- Added MP Format Version when saving MPO 6735
[radarhere]
- Added Interop to ExifTags 6724
[radarhere]
- CVE-2007-4559 patch when building on Windows 6704
[TrellixVulnTeam, nulano, radarhere]
- Fix compiler warning: accessing 64 bytes in a region of size 48 6714
[wiredfool]
- Use verbose flag for pip install 6713
[wiredfool, radarhere]
```
### 9.3.0
```
------------------
- 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]
```
Links
- PyPI: https://pypi.org/project/pillow
- Changelog: https://data.safetycli.com/changelogs/pillow/
This PR updates Pillow from 9.2.0 to 11.0.0.
Changelog
### 11.0.0 ``` ------------------- - Update licence to MIT-CMU 8460 [hugovk] - Conditionally define ImageCms type hint to avoid requiring core 8197 [radarhere] - Support writing LONG8 offsets in AppendingTiffWriter 8417 [radarhere] - Use ImageFile.MAXBLOCK when saving TIFF images 8461 [radarhere] - Do not close provided file handles with libtiff when saving 8458 [radarhere] - Support ImageFilter.BuiltinFilter for I;16* images 8438 [radarhere] - Use ImagingCore.ptr instead of ImagingCore.id 8341 [homm, radarhere, hugovk] - Updated EPS mode when opening images without transparency 8281 [Yay295, radarhere] - Use transparency when combining P frames from APNGs 8443 [radarhere] - Support all resampling filters when resizing I;16* images 8422 [radarhere] - Free memory on early return 8413 [radarhere] - Cast int before potentially exceeding INT_MAX 8402 [radarhere] - Check image value before use 8400 [radarhere] - Improved copying imagequant libraries 8420 [radarhere] - Use Capsule for WebP saving 8386 [homm, radarhere] - Fixed writing multiple StripOffsets to TIFF 8317 [Yay295, radarhere] - Fix dereference before checking for NULL in ImagingTransformAffine 8398 [PavlNekrasov] - Use transposed size after opening for TIFF images 8390 [radarhere, homm] - Improve ImageFont error messages 8338 [yngvem, radarhere, hugovk] - Mention MAX_TEXT_CHUNK limit in PNG error message 8391 [radarhere] - Cast Dib handle to int 8385 [radarhere] - Accept float stroke widths 8369 [radarhere] - Deprecate ICNS (width, height, scale) sizes in favour of load(scale) 8352 [radarhere] - Improved handling of RGBA palettes when saving GIF images 8366 [radarhere] - Deprecate isImageType 8364 [radarhere] - Support converting more modes to LAB by converting to RGBA first 8358 [radarhere] - Deprecate support for FreeType 2.9.0 8356 [hugovk, radarhere] - Removed unused TiffImagePlugin IFD_LEGACY_API 8355 [radarhere] - Handle duplicate EXIF header 8350 [zakajd, radarhere] - Return early from BoxBlur if either width or height is zero 8347 [radarhere] - Check text is either string or bytes 8308 [radarhere] - Added writing XMP bytes to JPEG 8286 [radarhere] - Support JPEG2000 RGBA palettes 8256 [radarhere] - Expand C image to match GIF frame image size 8237 [radarhere] - Allow saving I;16 images as PPM 8231 [radarhere] - When IFD is missing, connect get_ifd() dictionary to Exif 8230 [radarhere] - Skip truncated ICO mask if LOAD_TRUNCATED_IMAGES is enabled 8180 [radarhere] - Treat unknown JPEG2000 colorspace as unspecified 8343 [radarhere] - Updated error message when saving WebP with invalid width or height 8322 [radarhere, hugovk] - Remove warning if NumPy failed to raise an error during conversion 8326 [radarhere] - If left and right sides meet in ImageDraw.rounded_rectangle(), do not draw rectangle to fill gap 8304 [radarhere] - Remove WebP support without anim, mux/demux, and with buggy alpha 8213 [homm, radarhere] - Add missing TIFF CMYK;16B reader 8298 [homm] - Remove all WITH_* flags from _imaging.c and other flags 8211 [homm] - Improve ImageDraw2 shape methods 8265 [radarhere] - Lock around usages of imaging memory arenas 8238 [lysnikolaou] - Deprecate JpegImageFile huffman_ac and huffman_dc 8274 [radarhere] - Deprecate ImageMath lambda_eval and unsafe_eval options argument 8242 [radarhere] - Changed ContainerIO to subclass IO 8240 [radarhere] - Move away from APIs that use borrowed references under the free-threaded build 8216 [hugovk, lysnikolaou] - Allow size argument to resize() to be a NumPy array 8201 [radarhere] - Drop support for Python 3.8 8183 [hugovk, radarhere] - Add support for Python 3.13 8181 [hugovk, radarhere] - Fix incompatibility with NumPy 1.20 8187 [neutrinoceros, radarhere] - Remove PSFile, PyAccess and USE_CFFI_ACCESS 8182 [hugovk, radarhere] ``` ### 10.4.0 ``` ------------------- - Raise FileNotFoundError if show_file() path does not exist 8178 [radarhere] - Improved reading 16-bit TGA images with colour 7965 [Yay295, radarhere] - Deprecate non-image ImageCms modes 8031 [radarhere] - Fixed processing multiple JPEG EXIF markers 8127 [radarhere] - Do not preserve EXIFIFD tag by default when saving TIFF images 8110 [radarhere] - Added ImageFont.load_default_imagefont() 8086 [radarhere] - Added Image.WARN_POSSIBLE_FORMATS 8063 [radarhere] - Remove zero-byte end padding when parsing any XMP data 8171 [radarhere] - Do not detect Ultra HDR images as MPO 8056 [radarhere] - Raise SyntaxError specific to JP2 8146 [Yay295, radarhere] - Do not use first frame duration for other frames when saving APNG images 8104 [radarhere] - Consider I;16 pixel size when using a 1 mode mask 8112 [radarhere] - When saving multiple PNG frames, convert to mode rather than raw mode 8087 [radarhere] - Added byte support to FreeTypeFont 8141 [radarhere] - Allow float center for rotate operations 8114 [radarhere] - Do not read layers immediately when opening PSD images 8039 [radarhere] - Restore original thread state 8065 [radarhere] - Read IM and TIFF images as RGB, rather than RGBX 7997 [radarhere] - Only preserve TIFF IPTC_NAA_CHUNK tag if type is BYTE or UNDEFINED 7948 [radarhere] - Clarify ImageDraw2 error message when size is missing 8165 [radarhere] - Support unpacking more rawmodes to RGBA palettes 7966 [radarhere] - Removed support for Qt 5 8159 [radarhere] - Improve ``ImageFont.freetype`` support for XDG directories on Linux 8135 [mamg22, radarhere] - Improved consistency of XMP handling 8069 [radarhere] - Use pkg-config to help find libwebp and raqm 8142 [radarhere] - Accept 't' suffix for libtiff version 8126, 8129 [radarhere] - Deprecate ImageDraw.getdraw hints parameter 8124 [radarhere, hugovk] - Added ImageDraw circle() 8085 [void4, hugovk, radarhere] - Add mypy target to Makefile 8077 [Yay295] - Added more modes to Image.MODES 7984 [radarhere] - Deprecate BGR;15, BGR;16 and BGR;24 modes 7978 [radarhere, hugovk] - Fix ImagingAccess for I;16N on big-endian 7921 [Yay295, radarhere] - Support reading P mode TIFF images with padding 7996 [radarhere] - Deprecate support for libtiff < 4 7998 [radarhere, hugovk] - Corrected ImageShow UnixViewer command 7987 [radarhere] - Use functools.cached_property in ImageStat 7952 [nulano, hugovk, radarhere] - Add support for reading BITMAPV2INFOHEADER and BITMAPV3INFOHEADER 7956 [Cirras, radarhere] - Support reading CMYK JPEG2000 images 7947 [radarhere] ``` ### 10.3.0 ``` ------------------- - CVE-2024-28219: Use ``strncpy`` to avoid buffer overflow 7928 [radarhere, hugovk] - Deprecate ``eval()``, replacing it with ``lambda_eval()`` and ``unsafe_eval()`` 7927 [radarhere, hugovk] - Raise ``ValueError`` if seeking to greater than offset-sized integer in TIFF 7883 [radarhere] - Add ``--report`` argument to ``__main__.py`` to omit supported formats 7818 [nulano, radarhere, hugovk] - Added RGB to I;16, I;16L, I;16B and I;16N conversion 7918, 7920 [radarhere] - Fix editable installation with custom build backend and configuration options 7658 [nulano, radarhere] - Fix putdata() for I;16N on big-endian 7209 [Yay295, hugovk, radarhere] - Determine MPO size from markers, not EXIF data 7884 [radarhere] - Improved conversion from RGB to RGBa, LA and La 7888 [radarhere] - Support FITS images with GZIP_1 compression 7894 [radarhere] - Use I;16 mode for 9-bit JPEG 2000 images 7900 [scaramallion, radarhere] - Raise ValueError if kmeans is negative 7891 [radarhere] - Remove TIFF tag OSUBFILETYPE when saving using libtiff 7893 [radarhere] - Raise ValueError for negative values when loading P1-P3 PPM images 7882 [radarhere] - Added reading of JPEG2000 palettes 7870 [radarhere] - Added alpha_quality argument when saving WebP images 7872 [radarhere] - Fixed joined corners for ImageDraw rounded_rectangle() non-integer dimensions 7881 [radarhere] - Stop reading EPS image at EOF marker 7753 [radarhere] - PSD layer co-ordinates may be negative 7706 [radarhere] - Use subprocess with CREATE_NO_WINDOW flag in ImageShow WindowsViewer 7791 [radarhere] - When saving GIF frame that restores to background color, do not fill identical pixels 7788 [radarhere] - Fixed reading PNG iCCP compression method 7823 [radarhere] - Allow writing IFDRational to UNDEFINED tag 7840 [radarhere] - Fix logged tag name when loading Exif data 7842 [radarhere] - Use maximum frame size in IHDR chunk when saving APNG images 7821 [radarhere] - Prevent opening P TGA images without a palette 7797 [radarhere] - Use palette when loading ICO images 7798 [radarhere] - Use consistent arguments for load_read and load_seek 7713 [radarhere] - Turn off nullability warnings for macOS SDK 7827 [radarhere] - Fix shift-sign issue in Convert.c 7838 [r-barnes, radarhere] - Open 16-bit grayscale PNGs as I;16 7849 [radarhere] - Handle truncated chunks at the end of PNG images 7709 [lajiyuan, radarhere] - Match mask size to pasted image size in GifImagePlugin 7779 [radarhere] - Release GIL while calling ``WebPAnimDecoderGetNext`` 7782 [evanmiller, radarhere] - Fixed reading FLI/FLC images with a prefix chunk 7804 [twolife] - Update wl-paste handling and return None for some errors in grabclipboard() on Linux 7745 [nik012003, radarhere] - Remove execute bit from ``setup.py`` 7760 [hugovk] - Do not support using test-image-results to upload images after test failures 7739 [radarhere] - Changed ImageMath.ops to be static 7721 [radarhere] - Fix APNG info after seeking backwards more than twice 7701 [esoma, radarhere] - Deprecate ImageCms constants and versions() function 7702 [nulano, radarhere] - Added PerspectiveTransform 7699 [radarhere] - Add support for reading and writing grayscale PFM images 7696 [nulano, hugovk] - Add LCMS2 flags to ImageCms 7676 [nulano, radarhere, hugovk] - Rename x64 to AMD64 in winbuild 7693 [nulano] ``` ### 10.2.0 ``` ------------------- - Add ``keep_rgb`` option when saving JPEG to prevent conversion of RGB colorspace 7553 [bgilbert, radarhere] - Trim glyph size in ImageFont.getmask() 7669, 7672 [radarhere, nulano] - Deprecate IptcImagePlugin helpers 7664 [nulano, hugovk, radarhere] - Allow uncompressed TIFF images to be saved in chunks 7650 [radarhere] - Concatenate multiple JPEG EXIF markers 7496 [radarhere] - Changed IPTC tile tuple to match other plugins 7661 [radarhere] - Do not assign new fp attribute when exiting context manager 7566 [radarhere] - Support arbitrary masks for uncompressed RGB DDS images 7589 [radarhere, akx] - Support setting ROWSPERSTRIP tag 7654 [radarhere] - Apply ImageFont.MAX_STRING_LENGTH to ImageFont.getmask() 7662 [radarhere] - Optimise ``ImageColor`` using ``functools.lru_cache`` 7657 [hugovk] - Restricted environment keys for ImageMath.eval() 7655 [wiredfool, radarhere] - Optimise ``ImageMode.getmode`` using ``functools.lru_cache`` 7641 [hugovk, radarhere] - Fix incorrect color blending for overlapping glyphs 7497 [ZachNagengast, nulano, radarhere] - Attempt memory mapping when tile args is a string 7565 [radarhere] - Fill identical pixels with transparency in subsequent frames when saving GIF 7568 [radarhere] - Corrected duration when combining multiple GIF frames into single frame 7521 [radarhere] - Handle disposing GIF background from outside palette 7515 [radarhere] - Seek past the data when skipping a PSD layer 7483 [radarhere] - Import plugins relative to the module 7576 [deliangyang, jaxx0n] - Translate encoder error codes to strings; deprecate ``ImageFile.raise_oserror()`` 7609 [bgilbert, radarhere] - Support reading BC4U and DX10 BC1 images 6486 [REDxEYE, radarhere, hugovk] - Optimize ImageStat.Stat.extrema 7593 [florath, radarhere] - Handle pathlib.Path in FreeTypeFont 7578 [radarhere, hugovk, nulano] - Added support for reading DX10 BC4 DDS images 7603 [sambvfx, radarhere] - Optimized ImageStat.Stat.count 7599 [florath] - Correct PDF palette size when saving 7555 [radarhere] - Fixed closing file pointer with olefile 0.47 7594 [radarhere] - Raise ValueError when TrueType font size is not greater than zero 7584, 7587 [akx, radarhere] - If absent, do not try to close fp when closing image 7557 [RaphaelVRossi, radarhere] - Allow configuring JPEG restart marker interval on save 7488 [bgilbert, radarhere] - Decrement reference count for PyObject 7549 [radarhere] - Implement ``streamtype=1`` option for tables-only JPEG encoding 7491 [bgilbert, radarhere] - If save_all PNG only has one frame, do not create animated image 7522 [radarhere] - Fixed frombytes() for images with a zero dimension 7493 [radarhere] ``` ### 10.1.0 ``` ------------------- - Added TrueType default font to allow for different sizes 7354 [radarhere] - Fixed invalid argument warning 7442 [radarhere] - Added ImageOps cover method 7412 [radarhere, hugovk] - Catch struct.error from truncated EXIF when reading JPEG DPI 7458 [radarhere] - Consider default image when selecting mode for PNG save_all 7437 [radarhere] - Support BGR;15, BGR;16 and BGR;24 access, unpacking and putdata 7303 [radarhere] - Added CMYK to RGB unpacker 7310 [radarhere] - Improved flexibility of XMP parsing 7274 [radarhere] - Support reading 8-bit YCbCr TIFF images 7415 [radarhere] - Allow saving I;16B images as PNG 7302 [radarhere] - Corrected drawing I;16 points and writing I;16 text 7257 [radarhere] - Set blue channel to 128 for BC5S 7413 [radarhere] - Increase flexibility when reading IPTC fields 7319 [radarhere] - Set C palette to be empty by default 7289 [radarhere] - Added gs_binary to control Ghostscript use on all platforms 7392 [radarhere] - Read bounding box information from the trailer of EPS files if specified 7382 [nopperl, radarhere] - Added reading 8-bit color DDS images 7426 [radarhere] - Added has_transparency_data 7420 [radarhere, hugovk] - Fixed bug when reading BC5S DDS images 7401 [radarhere] - Prevent TIFF orientation from being applied more than once 7383 [radarhere] - Use previous pixel alpha for QOI_OP_RGB 7357 [radarhere] - Added BC5U reading 7358 [radarhere] - Allow getpixel() to accept a list 7355 [radarhere, homm] - Allow GaussianBlur and BoxBlur to accept a sequence of x and y radii 7336 [radarhere] - Expand JPEG buffer size when saving optimized or progressive 7345 [radarhere] - Added session type check for Linux in ImageGrab.grabclipboard() 7332 [TheNooB2706, radarhere, hugovk] - Allow "loop=None" when saving GIF images 7329 [radarhere] - Fixed transparency when saving P mode images to PDF 7323 [radarhere] - Added saving LA images as PDFs 7299 [radarhere] - Set SMaskInData to 1 for PDFs with alpha 7316, 7317 [radarhere] - Changed Image mode property to be read-only by default 7307 [radarhere] - Silence exceptions in _repr_jpeg_ and _repr_png_ 7266 [mtreinish, radarhere] - Do not use transparency when saving GIF if it has been removed when normalizing mode 7284 [radarhere] - Fix missing symbols when libtiff depends on libjpeg 7270 [heitbaum] ``` ### 10.0.1 ``` ------------------- - Updated libwebp to 1.3.2 7395 [radarhere] - Updated zlib to 1.3 7344 [radarhere] ``` ### 10.0.0 ``` ------------------- - Fixed deallocating mask images 7246 [radarhere] - Added ImageFont.MAX_STRING_LENGTH 7244 [radarhere, hugovk] - Fix Windows build with pyproject.toml 7230 [hugovk, nulano, radarhere] - Do not close provided file handles with libtiff 7199 [radarhere] - Convert to HSV if mode is HSV in getcolor() 7226 [radarhere] - Added alpha_only argument to getbbox() 7123 [radarhere. hugovk] - Prioritise speed in _repr_png_ 7242 [radarhere] - Do not use CFFI access by default on PyPy 7236 [radarhere] - Limit size even if one dimension is zero in decompression bomb check 7235 [radarhere] - Use --config-settings instead of deprecated --global-option 7171 [radarhere] - Better C integer definitions 6645 [Yay295, hugovk] - Fixed finding dependencies on Cygwin 7175 [radarhere] - Changed grabclipboard() to use PNG instead of JPG compression on macOS 7219 [abey79, radarhere] - Added in_place argument to ImageOps.exif_transpose() 7092 [radarhere] - Fixed calling putpalette() on L and LA images before load() 7187 [radarhere] - Fixed saving TIFF multiframe images with LONG8 tag types 7078 [radarhere] - Fixed combining single duration across duplicate APNG frames 7146 [radarhere] - Remove temporary file when error is raised 7148 [radarhere] - Do not use temporary file when grabbing clipboard on Linux 7200 [radarhere] - If the clipboard fails to open on Windows, wait and try again 7141 [radarhere] - Fixed saving multiple 1 mode frames to GIF 7181 [radarhere] - Replaced absolute PIL import with relative import 7173 [radarhere] - Replaced deprecated Py_FileSystemDefaultEncoding for Python >= 3.12 7192 [radarhere] - Improved wl-paste mimetype handling in ImageGrab 7094 [rrcgat, radarhere] - Added _repr_jpeg_() for IPython display_jpeg 7135 [n3011, radarhere, nulano] - Use "/sbin/ldconfig" if ldconfig is not found 7068 [radarhere] - Prefer screenshots using XCB over gnome-screenshot 7143 [nulano, radarhere] - Fixed joined corners for ImageDraw rounded_rectangle() odd dimensions 7151 [radarhere] - Support reading signed 8-bit TIFF images 7111 [radarhere] - Added width argument to ImageDraw regular_polygon 7132 [radarhere] - Support I mode for ImageFilter.BuiltinFilter 7108 [radarhere] - Raise error from stderr of Linux ImageGrab.grabclipboard() command 7112 [radarhere] - Added unpacker from I;16B to I;16 7125 [radarhere] - Support float font sizes 7107 [radarhere] - Use later value for duplicate xref entries in PdfParser 7102 [radarhere] - Load before getting size in __getstate__ 7105 [bigcat88, radarhere] - Fixed type handling for include and lib directories 7069 [adisbladis, radarhere] - Remove deprecations for Pillow 10.0.0 7059, 7080 [hugovk, radarhere] - Drop support for soon-EOL Python 3.7 7058 [hugovk, radarhere] ``` ### 9.5.0 ``` ------------------ - Added ImageSourceData to TAGS_V2 7053 [radarhere] - Clear PPM half token after use 7052 [radarhere] - Removed absolute path to ldconfig 7044 [radarhere] - Support custom comments and PLT markers when saving JPEG2000 images 6903 [joshware, radarhere, hugovk] - Load before getting size in __array_interface__ 7034 [radarhere] - Support creating BGR;15, BGR;16 and BGR;24 images, but drop support for BGR;32 7010 [radarhere] - Consider transparency when applying APNG blend mask 7018 [radarhere] - Round duration when saving animated WebP images 6996 [radarhere] - Added reading of JPEG2000 comments 6909 [radarhere] - Decrement reference count 7003 [radarhere, nulano] - Allow libtiff_support_custom_tags to be missing 7020 [radarhere] - Improved I;16N support 6834 [radarhere] - Added QOI reading 6852 [radarhere, hugovk] - Added saving RGBA images as PDFs 6925 [radarhere] - Do not raise an error if os.environ does not contain PATH 6935 [radarhere, hugovk] - Close OleFileIO instance when closing or exiting FPX or MIC 7005 [radarhere] - Added __int__ to IFDRational for Python >= 3.11 6998 [radarhere] - Added memoryview support to Dib.frombytes() 6988 [radarhere, nulano] - Close file pointer copy in the libtiff encoder if still open 6986 [fcarron, radarhere] - Raise an error if ImageDraw co-ordinates are incorrectly ordered 6978 [radarhere] - Added "corners" argument to ImageDraw rounded_rectangle() 6954 [radarhere] - Added memoryview support to frombytes() 6974 [radarhere] - Allow comments in FITS images 6973 [radarhere] - Support saving PDF with different X and Y resolutions 6961 [jvanderneutstulen, radarhere, hugovk] - Fixed writing int as UNDEFINED tag 6950 [radarhere] - Raise an error if EXIF data is too long when saving JPEG 6939 [radarhere] - Handle more than one directory returned by pkg-config 6896 [sebastic, radarhere] - Do not retry past formats when loading all formats for the first time 6902 [radarhere] - Do not retry specified formats if they failed when opening 6893 [radarhere] - Do not unintentionally load TIFF format at first 6892 [radarhere] - Stop reading when EPS line becomes too long 6897 [radarhere] - Allow writing IFDRational to BYTE tag 6890 [radarhere] - Raise ValueError for BoxBlur filter with negative radius 6874 [hugovk, radarhere] - Support arbitrary number of loaded modules on Windows 6761 [javidcf, radarhere, nulano] ``` ### 9.4.0 ``` ------------------ - Fixed null pointer dereference crash with malformed font 6846 [wiredfool, radarhere] - Return from ImagingFill early if image has a zero dimension 6842 [radarhere] - Reversed deprecations for Image constants, except for duplicate Resampling attributes 6830 [radarhere] - Improve exception traceback readability 6836 [hugovk, radarhere] - Do not attempt to read IFD1 if absent 6840 [radarhere] - Fixed writing int as ASCII tag 6800 [radarhere] - If available, use wl-paste or xclip for grabclipboard() on Linux 6783 [radarhere] - Added signed option when saving JPEG2000 images 6709 [radarhere] - Patch OpenJPEG to include ARM64 fix 6718 [radarhere] - Added support for I;16 modes in putdata() 6825 [radarhere] - Added conversion from RGBa to RGB 6708 [radarhere] - Added DDS support for uncompressed L and LA images 6820 [radarhere, REDxEYE] - Added LightSource tag values to ExifTags 6749 [radarhere] - Fixed PyAccess after changing ICO size 6821 [radarhere] - Do not use EXIF from info when saving PNG images 6819 [radarhere] - Fixed saving EXIF data to MPO 6817 [radarhere] - Added Exif hide_offsets() 6762 [radarhere] - Only compare to previous frame when checking for duplicate GIF frames while saving 6787 [radarhere] - Always initialize all plugins in registered_extensions() 6811 [radarhere] - Ignore non-opaque WebP background when saving as GIF 6792 [radarhere] - Only set tile in ImageFile __setstate__ 6793 [radarhere] - When reading BLP, do not trust JPEG decoder to determine image is CMYK 6767 [radarhere] - Added IFD enum to ExifTags 6748 [radarhere] - Fixed bug combining GIF frame durations 6779 [radarhere] - Support saving JPEG comments 6774 [smason, radarhere] - Added getxmp() to WebPImagePlugin 6758 [radarhere] - Added "exact" option when saving WebP 6747 [ashafaei, radarhere] - Use fractional coordinates when drawing text 6722 [radarhere] - Fixed writing int as BYTE tag 6740 [radarhere] - Added MP Format Version when saving MPO 6735 [radarhere] - Added Interop to ExifTags 6724 [radarhere] - CVE-2007-4559 patch when building on Windows 6704 [TrellixVulnTeam, nulano, radarhere] - Fix compiler warning: accessing 64 bytes in a region of size 48 6714 [wiredfool] - Use verbose flag for pip install 6713 [wiredfool, radarhere] ``` ### 9.3.0 ``` ------------------ - 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] ```Links
- PyPI: https://pypi.org/project/pillow - Changelog: https://data.safetycli.com/changelogs/pillow/