Skip to content

Conversation

@pyup-bot
Copy link
Collaborator

This PR updates Pillow from 9.5.0 to 12.0.0.

Changelog

11.1.0

----------------

See GitHub Releases:

- https://github.com/python-pillow/Pillow/releases

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]
Links

@pyup-bot pyup-bot mentioned this pull request Oct 15, 2025
@codecov
Copy link

codecov bot commented Oct 15, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 95.40%. Comparing base (30c5b2c) to head (267ddad).

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #338   +/-   ##
=======================================
  Coverage   95.40%   95.40%           
=======================================
  Files          44       44           
  Lines        2592     2592           
=======================================
  Hits         2473     2473           
  Misses        119      119           
Flag Coverage Δ
unittests 95.40% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants