ITADN

版本发布 8

12.1.1
? · 2026-02-11

https://pillow.readthedocs.io/en/stable/releasenotes/12.1.1.html ## Dependencies - Patch libavif for svt-av1 4.0 compatibility #9413 [@hugovk] ## Other changes - Fix OOB Write with invalid tile extents #9427 [@radarhere]

12.1.0
? · 2026-01-02

https://pillow.readthedocs.io/en/stable/releasenotes/12.1.0.html ## Deprecations - Deprecate getdata(), in favour of new get_flattened_data() #9292 [@radarhere] ## Documentation - Specify APNG duration type when opening #9368 [@radarhere] - Added release notes for #9350 #9366 [@radarhere] - Update ImageMorph documentation #9349 [@radarhere] - Docs: update major bump cadence #9334 [@hugovk] - Add release notes for #9070 #9320 [@radarhere] - Updated Ubuntu version #9306 [@radarhere] - Update macOS tested Pillow versions #9265 [@radarhere] ## Dependencies - Update harfbuzz to 12.3.0 #9355 [@radarhere] - Update xz to 5.8.2 #9343 [@radarhere] - Updated libjpeg-turbo to 3.1.3 #9333 [@radarhere] - Updated zlib-ng to 2.3.2 #9324 [@radarhere] - Updated libpng to 1.6.53 #9325 [@radarhere] - Update actions/checkout action to v6 #9323 [@[renovate[bot]](https://github.com/apps/renovate)] - Update dependency mypy to v1.19.0 #9322 [@[renovate[bot]](https://github.com/apps/renovate)] - Updated libpng to 1.6.51 #9305 [@radarhere] - Updated brotli to 1.2.0 #9284 [@radarhere] - Update libimagequant to 4.4.1 #9301 [@radarhere] - Update zlib-ng to 2.3.1, except on manylinux2014 aarch64 #9312 [@radarhere] - Updated harfbuzz to 12.2.0 #9289 [@radarhere] - Update github-actions #9277 [@[renovate[bot]](https://github.com/apps/renovate)] ## Testing - Replace pre-commit with prek #9360 [@hugovk] - Test PyQt6 on Python 3.14 on Windows #9353 [@radarhere] - Test 32-bit Windows on Windows Server 2022 #9345 [@radarhere] - Correct variable type #9335 [@radarhere] - Fix `ResourceWarning`s in `selftest.py` #9332 [@hugovk] - Fix testing good P mode BMP images #9319 [@radarhere] - Test Python 3.15 pre-release #9331 [@hugovk] - Test ImageFont.ImageFont, in case freetype2 is not supported #9287 [@radarhere] - Add Fedora 43 #9290 [@radarhere] - Remove Fedora 41 #9260 [@radarhere] ## Type hints - Add ImageFile context manager #9367 [@radarhere] - Assert fp is not None #8617 [@radarhere] - Added return type to ImageFile _close_fp() #9356 [@radarhere] - Use different variables for Image and ImageFile instances #9316 [@radarhere] - Correct variable type #9335 [@radarhere] - Improve type hints #9317 [@radarhere] - Use different variables for Image and ImageFile instances #9268 [@radarhere] - Added type hints #9269 [@radarhere] - Correct __getitem__ return type #9264 [@radarhere] ## Other changes - Simplify band splitting #9291 [@radarhere] - Support saving APNG float durations #9365 [@radarhere] - Allow 1 mode images in MorphOp #9348 [@radarhere] - Use minimum supported Python version for Lint #9364 [@radarhere] - Allow for duplicate font variation styles #9362 [@radarhere] - Call parent verify method #9357 [@radarhere] - Return LUT from LutBuilder build_default_lut() #9350 [@radarhere] - Simplify WebP code #9329 [@radarhere] - Use unsigned long for DWORD #9352 [@radarhere] - Cast to UINT32 before shifting bits #9347 [@radarhere] - [pre-commit.ci] pre-commit autoupdate #9318 [@[pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci)] - Allow window ID to be passed to ImageGrab.grab() on macOS #9070 [@yankeguo] - Apply encoder options when saving multiple PNG frames #9300 [@radarhere] - Read all non-zero transparency from mode 1 PNG images as 255 #9282 [@radarhere] - Support writing IFD, SIGNED_RATIONAL and InkNames TIFF tags #9276 [@radarhere] - Remove unused modes #9275 [@radarhere] - Correct allocating new color to RGBA palette #9313 [@radarhere] - Close image on ImageFont exception #9304 [@radarhere] - Reapply "Use macos-latest for iOS arm64 simulator" #9259 [@radarhere] - Escape period in pre-commit-config #9036 [@radarhere] - Add Apache-2.0 notice to IcoImagePlugin #8947 [@stefan6419846] - [pre-commit.ci] pre-commit autoupdate #9288 [@[pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci)] - Simplify code now that I;16* modes are the only IMAGING_TYPE_SPECIAL #9263 [@radarhere] - Remove BytesIO from DdsImagePlugin #9273 [@radarhere] - Fix ZeroDivisionError in DdsImagePlugin #9272 [@radarhere] - Fix warnings #9257 [@radarhere]

11.3.0
? · 2025-07-01

https://pillow.readthedocs.io/en/stable/releasenotes/11.3.0.html ## Deprecations - Deprecate fromarray mode argument #9018 [@radarhere] - Deprecate saving I mode images as PNG #9023 [@radarhere] ## Documentation - Added release notes for #9041 #9042 [@radarhere] - Add release notes for #8912 and #8969 #9019 [@radarhere] - ImageFont does not handle multiline text #9000 [@radarhere] - Updated Ubuntu CI targets #8988 [@radarhere] - Update MinGW package names #8987 [@H4M5TER] - Updated docstring #8943 [@radarhere] - Mention that tobytes() with the raw encoder uses Pack.c #8878 [@radarhere] - Refactor docs `Makefile` #8933 [@hugovk] - Add template for quarterly release issue #8932 [@aclark4life] - Add list of third party plugins #8910 [@radarhere] - Update redirected URL #8919 [@radarhere] - Docs: use sentence case for headers #8914 [@hugovk] - Docs: remove unused Makefile targets #8917 [@hugovk] - Remove indentation from lists #8915 [@radarhere] - Python 3.13 is tested on Arch #8894 [@radarhere] - Move XV Thumbnails to read only section #8893 [@aclark4life] - Updated macOS tested Pillow versions #8890 [@radarhere] ## Dependencies - Add AVIF to wheels using only aomenc and dav1d AVIF codecs for reduced size #8858 [@fdintino] - Use same AVIF URL when fetching dependency #8871 [@radarhere] - Update dependency mypy to v1.16.1 #9026 [@[renovate[bot]](https://github.com/apps/renovate)] - Update libpng to 1.6.49 #9014 [@radarhere] - Update dependency cibuildwheel to v3 #9010 [@[renovate[bot]](https://github.com/apps/renovate)] - Updated libjpeg-turbo to 3.1.1 #9009 [@radarhere] - Update dependency mypy to v1.16.0 #8991 [@[renovate[bot]](https://github.com/apps/renovate)] - Updated libpng to 1.6.48 #8940 [@radarhere] - Updated Ghostscript to 10.5.1 #8939 [@radarhere] - Updated harfbuzz to 11.2.1 #8937 [@radarhere] - Updated libavif to 1.3.0 #8949 [@radarhere] - Update dependency cibuildwheel to v2.23.3 #8931 [@[renovate[bot]](https://github.com/apps/renovate)] - Updated harfbuzz to 11.1.0 #8904 [@radarhere] ## Testing - Add `match` parameter to `pytest.warns()` #9038 [@hugovk] - Increase pytest verbosity #9040 [@radarhere] - Improve SgiImagePlugin test coverage #8896 [@radarhere] - Update ruff pre-commit ID #8994 [@radarhere] - Only check DHT marker for libjpeg-turbo #9025 [@radarhere] - Improve BLP tests #9020 [@radarhere] - Fix warning #9016 [@radarhere] - Test Python 3.14t on macOS and Linux #9011 [@radarhere] - Only accept missing tkinter when building wheels on Windows #8981 [@radarhere] - Fix test #8996 [@radarhere] - Stop testing deprecated Windows Server 2019 runner image #8989 [@radarhere] - Run slow tests on valgrind, but without timeout #8975 [@radarhere] - Close file pointer earlier #8895 [@radarhere] - Added Fedora 42 #8899 [@radarhere] - Removed Fedora 40 #8887 [@radarhere] ## Type hints - Assert palette is not None #8877 [@radarhere] - Do not import type checking #8854 [@radarhere] - Improve type hints #8883 [@radarhere] - Update dependency mypy to v1.16.0 #8991 [@[renovate[bot]](https://github.com/apps/renovate)] ## Other changes - Updated check script paths #9052 [@radarhere] - Raise FileNotFoundError when opening an empty path #9048 [@radarhere] - Handle IPTC TIFF tags with incorrect type #8925 [@radarhere] - Do not update palette for L mode GIF frame #8924 [@radarhere] - Use save parameters as encoderinfo defaults #9001 [@radarhere] - Add support for iOS #9030 [@freakboy3742] - Fix qtables and quality scaling #8879 [@Kyliroco] - Read 16-bit McIdas images into I;16B mode to allow for memory mapping #9046 [@radarhere] - Support ttb multiline text #8730 [@radarhere] - Use unpacking #9044 [@radarhere] - Fix saving MPO with more than one appended image #8979 [@radarhere] - Restore original encoderinfo after saving #8942 [@radarhere] - Return PixelAccess from first load of ICO and IPTC images #8922 [@radarhere] - Improve justifying text #8905 [@radarhere] - Set color table fourth channel to zero for 1 and L mode when saving BMP #8889 [@radarhere] - Improve reading XPM images #8874 [@radarhere] - Fix buffer overflow when saving compressed DDS images #9041 [@radarhere] - Use PEP 489 multi-phase initialization #8983 [@radarhere] - Support saving I;16L TIFF images #9015 [@radarhere] - Do not call sys.executable in ImageShow in PyInstaller application #9028 [@radarhere] - Search for libtiff library file first on Windows and macOS #9034 [@radarhere] - Fix libtiff cleanup #9002 [@radarhere] - Use percent formatting for _dbg calls #9035 [@radarhere] - Removed ImageCmsProfile._set method #9032 [@radarhere] - Added Python 3.14 macOS x86-64 wheels #9031 [@radarhere] - Support writing QOI images #9007 [@thisismypassport] - Simplify C error handling #9021 [@radarhere] - Add Python 3.14 beta wheels #9012 [@hugovk] - Remove padding between interleaved PCX palette data #9005 [@radarhere] - Start QOI decoding with a zero-initialized array of previously seen pixels #9008 [@radarhere] - Correct drawing I;16 horizontal lines #8985 [@radarhere] - Reduce number of bytes read for PCX header #9004 [@radarhere] - Handle XMP data from an UNDEFINED TIFF tag #8997 [@radarhere] - Do not decode bytes in PPM error message #8958 [@radarhere] - Parse XMP tag bytes without decoding to string #8960 [@radarhere] - Clear TIFF core image if memory mapping was used for last load #8962 [@radarhere] - Use mask in C when drawing wide polygon lines #8984 [@radarhere] - Simplify code #8863 [@radarhere] - Call startswith once with a tuple #8998 [@radarhere] - [pre-commit.ci] pre-commit autoupdate #8993 [@[pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci)] - Use ImageFile.MAXBLOCK in tobytes() #8906 [@radarhere] - Removed unreachable code #8918 [@radarhere] - Valgrind Memory Leak Checking #8954 [@wiredfool] - Add parallel test target, using pytest-xdist #8972 [@wiredfool] - Add support for flat uint8 arrow arrays for multi channel images #8908 [@wiredfool] - Removed CMAKE_POLICY_VERSION_MINIMUM=3.5 for libavif #8973 [@radarhere] - Reduced number of bytes read in WMF header #8964 [@radarhere] - Do not build against libavif < 1 #8969 [@radarhere] - Improved support for Python 3.14 #8948 [@radarhere] - [pre-commit.ci] pre-commit autoupdate #8944 [@[pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci)] - Allow loading ImageFile state from Pillow < 11.2.1 #8938 [@radarhere] - Remove outdated comment #8929 [@radarhere] - Add support for Grim in Wayland sessions ImageGrab #8912 [@AdianKozlica] - Add `make [-C docs] htmllive` to rebuild and reload HTML files #8913 [@hugovk] - Build Windows arm64 wheels on arm64 runner #8898 [@radarhere]

11.2.1
? · 2025-04-12

https://pillow.readthedocs.io/en/stable/releasenotes/11.2.1.html ## Deprecations - Moved get_child_images() to ImageFile #8689 [@radarhere] ## Documentation - Add 11.2.1 release notes #8885 [@radarhere] - Added avif to config settings #8875 [@radarhere] - Added release notes for #8330 #8853 [@radarhere] - Added release notes for #8781 and #8837 #8843 [@radarhere] - Added media_white_point to ImageCms documentation #8829 [@radarhere] - Removed FIXME #8825 [@radarhere] - Updated comment #8822 [@radarhere] - Added release notes for #8807 #8824 [@radarhere] - DXT3 images are read in RGBA mode #8817 [@radarhere] - JPEG comments are from the COM marker #8788 [@radarhere] - Update Sphinx to 8.2 to remove nitpick ignore #8763 [@radarhere] - Updated AffineTransform docstring to mention it uses the inverse matrix #8735 [@radarhere] - Added MozJPEG documentation #8699 [@radarhere] - Added Sphinx configuration key #8691 [@radarhere] - Updated macOS tested Pillow versions #8654 [@radarhere] ## Dependencies - Updated xz to 5.8.1 #8868 [@radarhere] - Updated harfbuzz to 11.0.1 #8870 [@radarhere] - Update scientific-python/upload-nightly-action action to v0.6.2 #8865 [@[renovate[bot]](https://github.com/apps/renovate)] - Updated xz to 5.8.0 in macOS and Linux wheels, but not on manylinux2014 #8836 [@radarhere] - Update dependency cibuildwheel to v2.23.2 #8832 [@[renovate[bot]](https://github.com/apps/renovate)] - Updated harfbuzz to 11.0.0 #8830 [@radarhere] - Update dependency cibuildwheel to v2.23.1 #8818 [@[renovate[bot]](https://github.com/apps/renovate)] - Updated Ghostscript to 10.5.0 #8814 [@radarhere] - Updated libtiff to 4.7.0 #8812 [@radarhere] - [pre-commit.ci] pre-commit autoupdate #8795 [@[pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci)] - Updated harfbuzz to 10.4.0 #8770 [@radarhere] - Update dependency mypy to v1.15.0 #8791 [@[renovate[bot]](https://github.com/apps/renovate)] - Updated libpng to 1.6.47 #8764 [@radarhere] - Updated lcms2 to 2.17 #8742 [@radarhere] - Update dependency cibuildwheel to v2.23.0 #8785 [@[renovate[bot]](https://github.com/apps/renovate)] - Updated zlib-ng to 2.2.4 #8745 [@radarhere] - Updated libimagequant to 4.3.4 on Windows #8744 [@radarhere] - [pre-commit.ci] pre-commit autoupdate #8729 [@[pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci)] - Updated harfbuzz to 10.2.0 #8688 [@radarhere] - Updated xz to 5.6.4 #8711 [@radarhere] - Updated libpng to 1.6.46 #8712 [@radarhere] - Updated libimagequant to 4.3.4 #8710 [@radarhere] - Updated libpng to 1.6.45 #8670 [@radarhere] - Update cygwin/cygwin-install-action action to v5 #8675 [@[renovate[bot]](https://github.com/apps/renovate)] - [pre-commit.ci] pre-commit autoupdate #8665 [@[pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci)] - Updated freetype to 2.13.3 in macOS and Linux wheels #8653 [@radarhere] - Upgrade zlib-ng to 2.2.3 #8656 [@hugovk] ## Testing - Fixed unclosed file warning #8847 [@radarhere] - Assert image type #8619 [@radarhere] - Parametrize tests #8838 [@radarhere] - Change back to actions/setup-python #8833 [@radarhere] - Simplified test code #8823 [@radarhere] - Improved FliImagePlugin test coverage #8806 [@radarhere] - Install libtiff-dev on Ubuntu GitHub Actions #8816 [@radarhere] - Test using _seek to skip frames #8804 [@radarhere] - Improved PcxImagePlugin test coverage #8797 [@radarhere] - Use match argument #8801 [@radarhere] - Improved BdfFontFile test coverage #8783 [@radarhere] - Revert "Do not install libimagequant" #8778 [@radarhere] - Improved FtexImagePlugin test coverage #8766 [@radarhere] - Improved FontFile test coverage #8771 [@radarhere] - Improved MpoImagePlugin test coverage #8765 [@radarhere] - Improved SunImagePlugin coverage #8762 [@radarhere] - Improve TarIO test coverage #8759 [@radarhere] - Improve type checking in tests #8618 [@radarhere] - Add PyPy3.11 to CI #8758 [@hugovk] - Don't call `make clean` or `pip` in tox #8754 [@hugovk] - Don't shadow builtin open #8756 [@radarhere] - Removed unused test code #8752 [@radarhere] - Use monkeypatch #8747 [@radarhere] - Do not install libimagequant on MinGW #8724 [@radarhere] - Use getpixel() instead of load() #8727 [@radarhere] - Revert "Ignore brew dependencies for libraqm on macOS 13" #8725 [@radarhere] - Fixed exceptions when closing AppendingTiffWriter #8723 [@radarhere] - Fixed unclosed file warnings #8705 [@radarhere] - Use monkeypatch #8707 [@radarhere] - Use Ubuntu 22.04 for 24.04 ppc64le and s390x #8713 [@radarhere] - Updated Ubuntu arm to 24.04 with arm64 runner #8700 [@radarhere] - Test oldest Python on 32-bit Windows 2019 and remove AppVeyor #8525 [@hugovk] - Corrected argument types #8681 [@radarhere] - Test Python 3.14 pre-release #8690 [@radarhere] - Skip test_embeddable if compiler cannot be initialized #8686 [@radarhere] - Improved test coverage #8679 [@radarhere] - Removed xfail for test_embeddable on Python 3.13 #8683 [@radarhere] - Use python-numpy and python-olefile instead of virtual python3 packages #8682 [@hugovk] - Use python-pip instead of python3-pip in MinGW #8678 [@radarhere] - Use ImageFile._Tile #8666 [@radarhere] - Improved SPIDER test coverage #8668 [@radarhere] - Removed unused image open #8649 [@radarhere] - PngImageFile text is a property #8648 [@radarhere] - Trigger wheel builds from changes in pyproject.toml #8674 [@radarhere] ## Type hints - Added fromarrow type hints #8867 [@radarhere] - Assert image type #8619 [@radarhere] - Check that _fp type is not DeferredError before use #8640 [@radarhere] - Corrected type check #8760 [@radarhere] - Improve type checking in tests #8618 [@radarhere] - Corrected argument types #8681 [@radarhere] - Use ImageFile._Tile #8666 [@radarhere] - Added return types #8639 [@radarhere] - Add overloads for exif_transpose #8657 [@cdce8p] ## Other changes - Do not include libavif in wheels #8876 [@radarhere] - Remove GPL v2 from FreeType license #8884 [@radarhere] - [pre-commit.ci] pre-commit autoupdate #8873 [@[pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci)] - Replace deprecated classifier with licence expression (PEP 639) #8850 [@hugovk] - Fixed conversion of AVIF image rotation property to EXIF orientation #8866 [@fdintino] - Removed condition that is always true #8862 [@radarhere] - Use multibuild build_github #8861 [@radarhere] - Include filename in ImageFile state #8859 [@radarhere] - Add KDE Wayland support for ImageGrab #8842 [@AdianKozlica] - Only change readonly if saved filename matches opened filename #8852 [@radarhere] - Allow HWND to be passed to ImageGrab.grab() on Windows #8516 [@radarhere] - Allow cmake<4 when building libavif and libtiff #8851 [@radarhere] - Image -> Arrow support #8330 [@wiredfool] - Add AVIF plugin (decoder + encoder using libavif) #5201 [@fdintino] - Updated xz to 5.8.0 on manylinux2014 by removing po4a dependency #8848 [@radarhere] - Revert to zlib on macOS < 10.15 #8772 [@radarhere] - Close TarIO file handle on error #8846 [@radarhere] - Do not import TYPE_CHECKING #8844 [@radarhere] - Enable memory mapping on PyPy #8840 [@radarhere] - Corrected Palm P mode save #8685 [@radarhere] - Improved connecting discontiguous corners #8659 [@radarhere] - Only read until the offset of the next tile #8609 [@radarhere] - Added USE_RAW_ALPHA for BMP images #8602 [@radarhere] - Fixed orientation when opening YCbCr TIFF images #8556 [@radarhere] - Allow loading of EMF images at a given DPI #8536 [@radarhere] - Skip failing records when rendering WMF images #8506 [@radarhere] - If append_images is populated, default save_all to True #8781 [@radarhere] - Added GimpPaletteFile frombytes() to allow for unlimited parsing #8826 [@radarhere] - Do not load image during save if file extension is unknown #8835 [@radarhere] - Do not convert BC1 LUT to UINT32 #8837 [@radarhere] - Start from zero index when reading GimpPaletteFile #8805 [@radarhere] - Support saving DDS images with pixel formats #8807 [@radarhere] - If every TIFF tile covers the image, only use the last offset #8820 [@radarhere] - Use docker/setup-qemu-action #8819 [@radarhere] - Replace deprecated Renovate schedule with cron syntax #8810 [@hugovk] - Allow coords to be sequence of lists #8800 [@radarhere] - Use ABCMeta in classes with abstractmethod #8803 [@radarhere] - Support reading grayscale JPEG2000 images with 4 channels #8786 [@radarhere] - Allow encoderconfig and encoderinfo to be set for appended TIFF images #8780 [@radarhere] - Call `startswith`/`endswith` once with a tuple, and `range` without `start=0` #8799 [@hugovk] - Corrected exif_transpose error when XMP is tuple #8792 [@radarhere] - Fixed loading GD images #8793 [@radarhere] - Image.core.outline will no longer raise an AttributeError #8794 [@radarhere] - Removed ImageTk._show #8782 [@radarhere] - _seek_check already raises an EOFError #8773 [@radarhere] - Only set mode when necessary in FtexImagePlugin #8767 [@radarhere] - Build PyPy3.11 wheel for macOS 10.15 x86_64 #8789 [@hugovk] - Replace slice and comparison with `startswith`/`endswith` #8761 [@hugovk] - Use member names to initialize PyTypeObjects #8741 [@radarhere] - Pass CFLAGS to build_simple directly #8738 [@radarhere] - Only crop GIF frames when saving with disposal method 2 if transparency is present #8748 [@radarhere] - Update `pythoncapi_compat.h` to fix building with PyPy3.11 #8757 [@mgorny] - Rewrite the install_name of the ZLIB-NG library on macOS #8673 [@freakboy3742] - Remove debug `Image._wedge` #8755 [@hugovk] - Remove unused `bdf_slant` and `bdf_spacing` variables #8753 [@hugovk] - Use boolean format argument for irreversible #8739 [@radarhere] - Simplify Python code by receiving tuple from C #8740 [@radarhere] - Use member names to initialize modules #8734 [@radarhere] - Simplify Python code by passing tuples to C #8733 [@radarhere] - Removed redundant argument parsing #8732 [@radarhere] - Added "justify" align for multiline text #8721 [@radarhere] - Seek relative to current position #8709 [@radarhere] - Only use outside border of stroke in text() #8701 [@radarhere] - Support saving PNG cICP chunk #8704 [@radarhere] - Use Py_RETURN_NONE macro when possible #8717 [@radarhere] - Added ImageFile close() #8702 [@radarhere] - Use arm64 Linux runners for wheels #8698 [@radarhere] - Test Windows amd64 wheels with NumPy #8696 [@radarhere] - Added logging to TiffImagePlugin fixIFD() #8568 [@radarhere] - Removed miniconda CPPFLAGS #8695 [@radarhere] - Improved comment #8694 [@radarhere] - Only F mode starts with F #8684 [@radarhere] - Allow saving multiple frames as BigTIFF #8663 [@radarhere] - Simplified converting to char * #8662 [@radarhere] - Use namedtuple _replace #8652 [@radarhere] - Updated TIFF decode error message string #8660 [@HarmvandenBrand] - Added compile-time mozjpeg feature flag #8645 [@radarhere] - Improved Docker coverage reporting #8664 [@radarhere] - Removed giflib as webp dependency #8661 [@radarhere] - Corrected installing ImageMagick on cifuzz #8658 [@radarhere]

11.1.0
? · 2025-01-02

https://pillow.readthedocs.io/en/stable/releasenotes/11.1.0.html ## Documentation - Added release notes for writing XMP bytes to JPEG and MPO #8627 [@radarhere] - Added release notes for using zlib-ng instead of zlib #8599 [@radarhere] - Replace python-pillow.org with python-pillow.github.io #8586 [@hugovk] - ImageFile tile is never None #8582 [@radarhere] - Only use start year in copyright, remove end years #8577 [@hugovk] - Python 3.12 is tested on MinGW #8575 [@radarhere] - Use brew formula to install libraqm #8574 [@radarhere] - Added link to GitHub releases in CHANGES #8571 [@radarhere] - Release drafter: move removals, deprecations, documentation up, and uncategorised changes last #8570 [@hugovk] - Updated macOS tested Pillow versions #8538 [@radarhere] - Use test image filename #8534 [@radarhere] - Update Windows 11 Arm64 tested versions #8523 [@nulano] - Move MPO into "Fully supported formats" #8504 [@radarhere] - Update license to MIT-CMU #8490 [@radarhere] ## Dependencies - Update dependency mypy to v1.14.1 #8643 [@renovate] - Update dependency mypy to v1.14.0 #8613 [@renovate] - Updated libwebp to 1.5.0 #8612 [@radarhere] - Updated libXau to 1.0.12 #8598 [@radarhere] - Updated libjpeg-turbo to 3.1.0 #8595 [@radarhere] - Updated harfbuzz to 10.1.0 #8533 [@radarhere] - Updated openjpeg to 2.5.3 #8591 [@radarhere] - Update dependency cibuildwheel to v2.22.0 #8580 [@renovate] - Update codecov/codecov-action action to v5 #8557 [@renovate] - Migrate renovate config #8527 [@renovate] - Update dependency mypy to v1.13.0 #8491 [@renovate] - Update dependency mypy to v1.12.1 #8487 [@renovate] ## Testing - Added CentOS Stream 10 #8646 [@radarhere] - Use monkeypatch #8628 [@radarhere] - Pass file handle to ContainerIO #8625 [@radarhere] - Use register_handler #8499 [@radarhere] - Use monkeypatch #8626 [@radarhere] - Test libjpeg-turbo on macOS #8596 [@radarhere] - Test 3.13t (free-threaded) from Quansight-Labs/setup-python on Linux and macOS #8565 [@hugovk] - Run gcc problem matcher on Python 3.13 #8541 [@radarhere] - Add trove-classifiers>=2024.10.12 to 'tests' extra and use for Windows CI #8514 [@hugovk] - Apply security fixes to GitHub Actions #8526 [@hugovk] - Remove unused `gcov: true` for codecov-action@v4 #8521 [@hugovk] - Added Fedora 41 #8520 [@radarhere] - Do not repeatedly save to the same path #8512 [@radarhere] - Use fixture to re-open image for each JPEG2000 test #8484 [@radarhere] - Fixed catching warnings #8505 [@radarhere] - Updated test type hint #8482 [@radarhere] - Removed Fedora 39 #8466 [@radarhere] ## Type hints - Pass file handle to ContainerIO #8625 [@radarhere] - Corrected loadImageSeries type hint #8624 [@radarhere] - Removed quotes after dropping support for Python 3.8 #8544 [@radarhere] - Fixed type hint #8532 [@radarhere] - Updated test type hint #8482 [@radarhere] ## Other changes - Corrected BLP1 alpha depth handling #8651 [@radarhere] - Remove pre-C99 definitions #8644 [@radarhere] - Allow saving as BigTIFF #8642 [@radarhere] - Restored Makernote as a deprecated enum #8629 [@radarhere] - Use elif #8641 [@radarhere] - Add zizmor to pre-commit and fix potential cache-poisoning in wheels workflow #8638 [@hugovk] - Keep new IFDs when converting EXIF to bytes #8635 [@radarhere] - Added RGBX;16N to RGB unpacker #8637 [@radarhere] - Populate JPEG DPI from JFIF cm density #8633 [@radarhere] - Support saving CMYK JP2 images #8592 [@radarhere] - Added reading of J2K comments #8622 [@radarhere] - Removed variable #8631 [@radarhere] - Do not use temporary file in ImageGrab.grabclipboard() on macOS #8630 [@radarhere] - Fixed connecting discontiguous corners #8620 [@radarhere] - Do not create new image when exif_transpose() is used in place #8555 [@radarhere] - Added default values for _Tile offset and args #8553 [@radarhere] - Platform guessing affects more than just Linux #8551 [@radarhere] - Raise UnidentifiedImageError when opening TIFF without dimensions #8535 [@radarhere] - Pass IFDs to libtiff as TIFF_LONG8 #8529 [@radarhere] - Do not save XMP from JPEG info #8483 [@radarhere] - Include JpegImageFile layers in pickle state #8476 [@radarhere] - Fixed indentation #8623 [@radarhere] - Updated MakerNote capitalization #8615 [@radarhere] - Replace constants with EXIF enums #8611 [@radarhere] - Install libjpeg-turbo8-dev #8610 [@radarhere] - Raise ValueError when WMF inch is zero #8600 [@radarhere] - Extract tar files with "data" filter in Windows build scripts #8606 [@radarhere] - Updated libjpeg-turbo URL #8608 [@radarhere] - Derive dir from filename if root is the same in winbuild #8567 [@radarhere] - Updated libjpeg-turbo and harfbuzz URLs #8604 [@radarhere] - Do not describe raw data as a table #8579 [@radarhere] - Improved handling of RGBA palettes when saving GIF images #8494 [@radarhere] - Use .tar.gz zlib in Windows build to match macOS and Linux #8601 [@radarhere] - Use zlib-ng instead of zlib #8500 [@nulano] - Do not attempt to install cmake if it is already present #8593 [@radarhere] - [pre-commit.ci] pre-commit autoupdate #8578 [@pre-commit-ci] - Updated build option error messages #8576 [@radarhere] - Fix file position desync when calling into libtiff #8560 [@Knio] - Do not attempt to install cmake a second time when building macOS or Linux wheels #8566 [@radarhere] - Do not install Pyroma in MinGW, to use only system packages #8562 [@radarhere] - Isolate macOS wheel builds from Homebrew #8497 [@freakboy3742] - Removed use of os.path.realpath #8545 [@radarhere] - Allow linking to zlib import library on Windows #8519 [@cubanpit] - [pre-commit.ci] pre-commit autoupdate #8531 [@pre-commit-ci] - Detach PyQt6 QPixmap instance before returning #8509 [@radarhere] - Upgraded multibuild to remove openjpeg lib64 copy #8511 [@radarhere] - brew remove libdeflate #8502 [@radarhere] - Fix SEGFAULT from calling FT_New_Face/FT_Done_Face in multiple threads #8496 [@lysnikolaou] - Corrected EMF DPI #8485 [@radarhere] - Added filename placeholder in winbuild URL #8498 [@radarhere] - Fix IFDRational with a zero denominator #8474 [@renovate] - Fixed disabling a feature during install #8469 [@radarhere] - Skip PyPy3.9 wheels #8467 [@radarhere] - Removed unnecessary code #8465 [@radarhere]

11.0.0
? · 2024-10-15

https://pillow.readthedocs.io/en/stable/releasenotes/10.5.0.html ## Changes - Do not create core image in TIFF seek() #8392 [@radarhere] - Removed custom build_openjpeg #8365 [@radarhere] - Support writing LONG8 offsets in AppendingTiffWriter #8417 [@radarhere] - Use ImageFile.MAXBLOCK when saving TIFF images #8461 [@radarhere] - Always raise warnings for deprecated feature checks #8459 [@radarhere] - Do not close provided file handles with libtiff when saving #8458 [@radarhere] - Revert "Skip QEMU-emulated wheels on workflow dispatch event" #8455 [@radarhere] - Support ImageFilter.BuiltinFilter for I;16* images #8438 [@radarhere] - [pre-commit.ci] pre-commit autoupdate #8448 [@pre-commit-ci] - Use ImagingCore.ptr instead of ImagingCore.id #8341 [@homm] - Simplified code #8445 [@radarhere] - Removed unused code #8447 [@radarhere] - Updated EPS mode when opening images without transparency #8281 [@Yay295] - Use transparency when combining P frames from APNGs #8443 [@radarhere] - Generate and upload attestations to PyPI #8441 [@hugovk] - Do not convert images unnecessarily in ImageEnhance #8431 [@radarhere] - Raise an error if path is compacted during mapping #8416 [@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] - Prevent division by zero #8408 [@radarhere] - Check image value before use #8400 [@radarhere] - Use ruff check #8423 [@radarhere] - Change harfbuzz versions in wheels #8421 [@radarhere] - Use Capsule for WebP saving #8386 [@homm] - Fixed writing multiple StripOffsets to TIFF #8317 [@Yay295] - Updated macOS deployment target for PyPy on Intel to 10.15 #8414 [@radarhere] - Fix dereference before checking for NULL in ImagingTransformAffine #8398 [@PavlNekrasov] - Use transposed size after opening for TIFF images #8390 [@radarhere] - Improve ImageFont error messages #8338 [@yngvem] - Mention MAX_TEXT_CHUNK limit in PNG error message #8391 [@radarhere] - Cast Dib handle to int #8385 [@radarhere] - Updated macOS deployment target for Python >= 3.12 on Intel to 10.13 #8379 [@radarhere] - Removed unused ImagePath variable #8377 [@radarhere] - Change macos-14 to macos-latest #8376 [@radarhere] - Accept float stroke widths #8369 [@radarhere] - Remove comments #8370 [@radarhere] - Removed libffi-dev #8368 [@radarhere] - Improved handling of RGBA palettes when saving GIF images #8366 [@radarhere] - Support converting more modes to LAB by converting to RGBA first #8358 [@radarhere] - Optimize getbbox() and getextrema() routines #8194 [@homm] - Removed unused TiffImagePlugin IFD_LEGACY_API #8355 [@radarhere] - Handle duplicate EXIF header #8350 [@zakajd] - Use (void) for empty function parameters #8002 [@Yay295] - 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] - Require font parameter in FreeTypeFont and truetype() #8261 [@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] - [pre-commit.ci] pre-commit autoupdate #8342 [@pre-commit-ci] - Updated error message when saving WebP with invalid width or height #8322 [@radarhere] - Remove warning if NumPy failed to raise an error during conversion #8326 [@radarhere] - Move repeated code to private helper function #8310 [@Yay295] - Get IPTC info from tag_v2 #8315 [@radarhere] - Log value from tag_v2 instead of tag #8306 [@radarhere] - If left and right sides meet in ImageDraw.rounded_rectangle(), do not draw rectangle to fill gap #8304 [@radarhere] - Add missing TIFF CMYK;16B reader #8298 [@homm] - Fix undefined variable #8293 [@radarhere] - Enforce CSV names style for `pytest.mark.parametrize` #8295 [@akx] - Fixed sign comparison warning #8294 [@radarhere] - Move auxiliary mypy requirements to a requirements file #8289 [@akx] - Removed unused variable #8288 [@radarhere] - Improve ImageDraw2 shape methods #8265 [@radarhere] - Lock around usages of imaging memory arenas #8238 [@lysnikolaou] - Removed unused argument #8257 [@radarhere] - Do not run scheduled wheel jobs on forks #8254 [@Yay295] - Use local variable instead of casting every line #8248 [@Yay295] - Change AlignAfterOpenBracket in .clang-format to BlockIndent #8067 [@Yay295] - Move uploading nightly wheels to different job #8244 [@lysnikolaou] - Skip QEMU-emulated wheels on workflow dispatch event #8243 [@lysnikolaou] - Upload wheels to scientific-python-nightly-wheels index #8236 [@lysnikolaou] - Temporarily disable cifuzz #8239 [@radarhere] - Simplified code #8235 [@radarhere] - Move away from APIs that use borrowed references under the free-threaded build #8216 [@hugovk] - Build free-threaded wheels #8219 [@radarhere] - Group aarch64 wheel jobs #8206 [@radarhere] - Allow size argument to resize() to be a NumPy array #8201 [@radarhere] - Add support for Python 3.13 #8181 [@hugovk] - Removed Debian 11 #8185 [@radarhere] ## Dependencies - Update dependency cibuildwheel to v2.21.3 #8453 [@renovate] - Update dependency cibuildwheel to v2.21.2 #8436 [@renovate] - Updated xz to 5.6.3 #8434 [@radarhere] - Update scientific-python/upload-nightly-action action to v0.6.1 #8430 [@renovate] - Update scientific-python/upload-nightly-action action to v0.6.0 #8425 [@renovate] - Updated harfbuzz to 10.0.1 in remaining wheels #8424 [@radarhere] - Improved copying imagequant libraries #8420 [@radarhere] - Updated fribidi to 1.0.16 #8419 [@radarhere] - Updated harfbuzz to 10.0.1 #8415 [@radarhere] - Updated harfbuzz to 10.0.0 #8411 [@radarhere] - Shared imagequant libraries may be located within usr/lib64 #8407 [@radarhere] - winbuild: Build freetype.vcxproj to fix passing in custom parameters #8403 [@nulano] - Updated raqm to 0.10.2 #8404 [@radarhere] - Updated Ghostscript to 10.4.0 #8395 [@radarhere] - Update dependency cibuildwheel to v2.21.1 #8388 [@renovate] - Updated libjpeg-turbo to 3.0.4 #8384 [@radarhere] - Update dependency cibuildwheel to v2.21.0 #8378 [@renovate] - Updated xz to 5.6.2 #7916 [@radarhere] - Updated libpng to 1.6.44 #8375 [@radarhere] - Updated harfbuzz to 9.0.0 in wheels, except for manylinux2014 #8361 [@radarhere] - Update deadsnakes/action action to v3.2.0 #8360 [@renovate] - Updated harfbuzz to 9.0.0 #8344 [@radarhere] - Updated libimagequant to 4.3.3 #8284 [@radarhere] - Updated freetype to 2.13.3 #8302 [@radarhere] - Update dependency mypy to v1.11.2 #8334 [@renovate] - [pre-commit.ci] pre-commit autoupdate #8287 [@pre-commit-ci] - Update dependency cibuildwheel to v2.20.0 #8282 [@renovate] - Update dependency mypy to v1.11.1 #8280 [@renovate] - Update dependency mypy to v1.11.0 #8252 [@renovate] - Update dependency cibuildwheel to v2.19.2 #8192 [@renovate] - [pre-commit.ci] pre-commit autoupdate #8188 [@pre-commit-ci] ## Deprecations - Deprecate ICNS (width, height, scale) sizes in favour of load(scale) #8352 [@radarhere] - Deprecate isImageType #8364 [@radarhere] - Deprecate support for FreeType 2.9.0 #8356 [@hugovk] - Remove WebP support without anim, mux/demux, and with buggy alpha #8213 [@homm] - Deprecate JpegImageFile huffman_ac and huffman_dc #8274 [@radarhere] - Deprecate ImageMath lambda_eval and unsafe_eval options argument #8242 [@radarhere] ## Documentation - Update Python 3.13 release date #8463 [@hugovk] - Update licence to MIT-CMU #8460 [@hugovk] - Use CVE and CWE roles from Sphinx 8.1 #8457 [@hugovk] - Updated test environment documentation #8427 [@radarhere] - Updated macOS tested Pillow versions #8429 [@radarhere] - Updated link to OSS Fuzz issues #8399 [@radarhere] - Added release notes for #8379 #8381 [@radarhere] - Windows wheels are now grouped with the others #8371 [@radarhere] - Added release notes for #8199, #8213 and #8286 #8367 [@radarhere] - Restore exiv2.org links #8260 [@hugovk] - Add tutorial images #8246 [@aclark4life] - Updated macOS tested Pillow versions #8202 [@radarhere] - Updated CVE URL #8186 [@radarhere] ## Removals - Drop support for EOL PyPy3.9 #8335 [@hugovk] - Remove all WITH_* flags from _imaging.c and other flags #8211 [@homm] - Remove unused _util.is_directory #8259 [@hugovk] - Drop support for Python 3.8 #8183 [@hugovk] - Remove PSFile, PyAccess and USE_CFFI_ACCESS #8182 [@hugovk] ## Testing - Fixed unclosed file warning in test_imageshow.py #8446 [@radarhere] - Test Python 3.13 on AppVeyor #8442 [@hugovk] - Test cifuzz when wheel dependencies change #8435 [@radarhere] - Restore cifuzz #8428 [@radarhere] - Use common test scripts for more tests #8396 [@Yay295] - Lint: Run PT016 #8382 [@radarhere] - Test NumPy with musllinux wheels #8374 [@radarhere] - Install NumPy from PyPI when testing wheels #8373 [@lysnikolaou] - Install NumPy from PyPI for free threaded job #8372 [@radarhere] - Canonical type comparison #8349 [@AryazE] - Updated oss-fuzz to Python 3.10 #8297 [@radarhere] - Corrected GitHub Actions Windows Ghostscript path #8332 [@radarhere] - Catch defusedxml warnings #8325 [@radarhere] - Uninstall gradle and maven on macOS 13 #8318 [@radarhere] - Lint: run more flake8-pytest-style #8309 [@hugovk] - Parametrize some color_lut tests for DRYness #8290 [@akx] - Test 3.13 free-threaded build on CI #8200 [@hugovk] - Test NumPy on Python 3.13 #8189 [@hugovk] ## Type hints - Added type hints to remaining ImageMath methods #8464 [@radarhere] - Conditionally define ImageCms type hint to avoid requiring core #8197 [@radarhere] - Added type hints #8354 [@radarhere] - Added type hints #8351 [@radarhere] - Added type hints #8339 [@radarhere] - Added type hints to ImageFile.__init__() #8336 [@radarhere] - Added type hints to Image.__init__() #8279 [@radarhere] - Added type hints #8331 [@radarhere] - Added type hints #8319 [@radarhere] - Added type hints #8285 [@radarhere] - Added type hints #8270 [@radarhere] - Added type hints #8268 [@radarhere] - Added type hints #8267 [@radarhere] - Added type hints #8263 [@radarhere] - Added type hints #8262 [@radarhere] - Added type hints #8250 [@radarhere] - Changed ContainerIO to subclass IO #8240 [@radarhere] - Added type hints #8234 [@radarhere] - Added type hints #8228 [@radarhere] - Added type hints #8214 [@radarhere] - Added type hint #8210 [@radarhere] - Added type hints to PdfParser #8207 [@radarhere] - Check test type hints #8208 [@radarhere] - Added type hints to tests #8203 [@radarhere] - Added type hints #8204 [@radarhere] - Added type hints #8191 [@radarhere] - Fix incompatibility with NumPy 1.20 #8187 [@neutrinoceros]

10.4.0
? · 2024-07-01

https://pillow.readthedocs.io/en/stable/releasenotes/10.4.0.html ## Changes - Raise FileNotFoundError if show_file() path does not exist #8178 [@radarhere] - Improved reading 16-bit TGA images with colour #7965 [@Yay295] - 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] - Do not presume "xmp" info simply because "XML:com.adobe.xmp" info exists #8173 [@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] - 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] - Prevent extra EPS header validations #8144 [@Yay295] - 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] - Improved consistency of XMP handling #8069 [@radarhere] - Use pkg-config to help find libwebp and raqm #8142 [@radarhere] - Renamed C transform2 to transform #8113 [@radarhere] - Updated nasm to 2.16.03 #7990 [@radarhere] - [pre-commit.ci] pre-commit autoupdate #8100 [@pre-commit-ci] - Updated ImageCms.createProfile colorTemp default and docstring #8096 [@radarhere] - Added ImageDraw circle() #8085 [@void4] - Don't reuse variable name #8082 [@Yay295] - Use functools.cached_property in GifImagePlugin #8037 [@radarhere] - Add mypy target to Makefile #8077 [@Yay295] - Added Python 3.13 beta wheels #8071 [@radarhere] - Parse _version contents instead of using exec() #8050 [@radarhere] - Lint fixes #8068 [@radarhere] - Fix type errors #8064 [@radarhere] - Added MPEG accept function #7999 [@radarhere] - Added more modes to Image.MODES #7984 [@radarhere] - [pre-commit.ci] pre-commit autoupdate #8044 [@pre-commit-ci] - Do not use percent format in strings #8045 [@radarhere] - Changed string formatting to f-strings #8043 [@mrKazzila] - Removed direct invocation of setup.py #8027 [@radarhere] - Update ExifTags.py #8020 [@CTimmerman] - Fix ImagingAccess for I;16N on big-endian #7921 [@Yay295] - Combined conditions #8011 [@radarhere] - Simplified RGB to I;16, I;16L and I;16B conversion #8008 [@radarhere] - Extract band count check #8006 [@Yay295] - Remove unused variable #8005 [@Yay295] - Remove semicolon after function definition #8004 [@Yay295] - Support reading P mode TIFF images with padding #7996 [@radarhere] - Corrected ImageShow UnixViewer command #7987 [@radarhere] - Removed CentOS Stream 8 #7977 [@radarhere] - Removed CentOS 7 #7976 [@radarhere] - dist directory is no longer created #7974 [@radarhere] - Add support for reading BITMAPV2INFOHEADER and BITMAPV3INFOHEADER #7956 [@Cirras] - Update `make release-test`: no more eggs #7957 [@hugovk] - Make ModeDescriptor a NamedTuple #7951 [@Yay295] - Support reading CMYK JPEG2000 images #7947 [@radarhere] - Remove unused CMS properties and fix documentation #7931 [@Yay295] - [pre-commit.ci] pre-commit autoupdate #7932 [@pre-commit-ci] ## Dependencies - Update dependency mypy to v1.10.1 #8177 [@renovate] - Update dependency cibuildwheel to v2.19.1 #8143 [@renovate] - Update dependency cibuildwheel to v2.19.0 #8131 [@renovate] - Updated libjpeg-turbo to 3.0.3 #8048 [@radarhere] - Updated fribidi to 1.0.15 #8014 [@radarhere] - Updated libwebp to 1.4.0 #7973 [@radarhere] - Updated libxcb and xcb-proto to 1.17.0 #7982 [@radarhere] - Updated libimagequant to 4.3.1 #8025 [@radarhere] - Updated harfbuzz to 8.5.0 #8059 [@radarhere] - Updated Ghostscript to 10.3.1 #8078 [@radarhere] - chore(deps): update dependency cibuildwheel to v2.18.1 #8070 [@renovate] - chore(deps): update dependency cibuildwheel to v2.18.0 #8054 [@renovate] - Update dependency mypy to v1.10.0 #8013 [@renovate] ## Deprecations - Deprecate non-image ImageCms modes #8031 [@radarhere] - Deprecate ImageDraw.getdraw hints parameter #8124 [@radarhere] - Deprecate BGR;15, BGR;16 and BGR;24 modes #7978 [@radarhere] - Deprecate support for libtiff < 4 #7998 [@radarhere] ## Documentation - Converted example images to WebP #7963 [@radarhere] - Use latest Ubuntu on Read The Docs #8136 [@radarhere] - Use Sphinx long options in `Makefile` #8109 [@hugovk] - Removed documentation of unused argument #8079 [@radarhere] - Updated CI targets table #8028 [@radarhere] - Automatically add dates to release notes #8001 [@hugovk] - Remove sphinx-removed-in, now Sphinx 7.3 adds versionremoved #7988 [@hugovk] - Removed nitpick_ignore by updating Sphinx to 7.3 #7985 [@radarhere] - Updated installation links #7981 [@radarhere] - Corrected packer comments #7964 [@Yay295] - Release checklist: inline the 'Source and Binary Distributions' step #7959 [@hugovk] - Removed outdated comment #7955 [@radarhere] - Document that QoiImagePlugin uses Python for decoding #7937 [@radarhere] - Updated macOS tested Pillow versions #7934 [@radarhere] - Fix ImageMath documentation parameter names #7933 [@jbjd] ## Testing - Use more specific error #8168 [@radarhere] - Ignore brew dependencies for libraqm on macOS 13 #8140 [@radarhere] - Corrected AppVeyor Ghostscript path #8138 [@radarhere] - Accept 't' suffix for libtiff version #8129 [@radarhere] - Accept 't' suffix for libtiff version #8126 [@radarhere] - Add ClangFormat to pre-commit #8015 [@hugovk] - Removed helper.py modes #8053 [@radarhere] - Updated codecov/codecov-action to v4 #8041 [@radarhere] - Added Ubuntu 24.04 #8023 [@radarhere] - Corrected big-endian check #8022 [@radarhere] - Use LAB hopper file if conversion is not supported #7979 [@radarhere] - Removed Fedora 38 and added Fedora 40 #8012 [@radarhere] - Update tests to allow for zlib-ng #8009 [@radarhere] - GitHub Actions: use `macos-13` or `macos-14` instead of `macos-latest` #8010 [@hugovk] - Corrected check for libtiff feature #8000 [@radarhere] - Corrected check for libtiff feature #7975 [@radarhere] - Fix test error message grammar #7967 [@Yay295] - Replace ImageMath.eval with ImageMath.lambda_eval in selftest.py #7960 [@radarhere] - Rename test_roundtrip() to test_mode() #7950 [@Yay295] - Updated pattern for skipping builds based on file changes #7938 [@radarhere] - Corrected ImageCms test #7930 [@radarhere] ## Type hints - Simplified casts #8169 [@radarhere] - Added type hints #8167 [@radarhere] - Added type hints for PixelAccess related methods and others #8032 [@nulano] - Added type hints to additional tests #8163 [@radarhere] - Updated type hints #8153 [@radarhere] - Added type hints to ImageFilter #8156 [@radarhere] - Added type hints to ImageDraw shape methods #8151 [@radarhere] - Added type hints to Image #8150 [@radarhere] - Added type hints #8134 [@radarhere] - Added type hints to additional tests #8118 [@radarhere] - Added type hints #8132 [@radarhere] - Added type hints to GifImagePlugin #8128 [@radarhere] - Added type hints #8125 [@radarhere] - Added type hints #8117 [@radarhere] - Added type hints #8108 [@radarhere] - Added type hints to ImageColor #8115 [@radarhere] - Add various type annotations #8046 [@srittau] - Added type hints #8107 [@radarhere] - Added type hints #8105 [@radarhere] - Added type hints #8066 [@radarhere] - Added type hints #8099 [@radarhere] - Corrected type hint #8098 [@radarhere] - Updated type hints for tests #8095 [@radarhere] - Added type hints to additional tests #8093 [@radarhere] - Added type hints to additional tests #8091 [@radarhere] - Added type hints to additional tests #8090 [@radarhere] - Added type hints #8061 [@radarhere] - Added type hints #8055 [@radarhere] - Added type hints #8051 [@radarhere] - Added type hints #8042 [@radarhere] - Added type hints #8030 [@radarhere] - Removed type hint ignores #7989 [@radarhere] - fromarray: add type hints #7936 [@adamjstewart] - Use functools.cached_property in ImageStat #7952 [@nulano] - Add type hints for `Image.open`, `Image.init`, and `Image.Image.save` #7944 [@nulano]

10.3.0
? · 2024-04-01

https://pillow.readthedocs.io/en/stable/releasenotes/10.3.0.html ## Changes - CVE-2024-28219: Use strncpy to avoid buffer overflow #7928 [@hugovk] - Use `functools.lru_cache` for `hopper()` #7912 [@hugovk] - Raise ValueError if seeking to greater than offset-sized integer in TIFF #7883 [@radarhere] - Improve speed of loading QOI images #7925 [@radarhere] - Added RGB to I;16N conversion #7920 [@radarhere] - Add --report argument to __main__.py to omit supported formats #7818 [@nulano] - Added RGB to I;16, I;16L and I;16B conversion #7918 [@radarhere] - Fix editable installation with custom build backend and configuration options #7658 [@nulano] - Fix putdata() for I;16N on big-endian #7209 [@Yay295] - 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] - 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] - Removed Python and NumPy pinning on Cygwin #7880 [@radarhere] - Update UnidentifiedImageError and __version__ imports #7644 [@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] - winbuild: Refactor dependency versions into constants #7843 [@hugovk] - Build macOS arm64 wheels natively #7852 [@radarhere] - Fixed typo #7855 [@radarhere] - Open 16-bit grayscale PNGs as I;16 #7849 [@radarhere] - Handle truncated chunks at the end of PNG images #7709 [@lajiyuan] - Match mask size to pasted image size in GifImagePlugin #7779 [@radarhere] - Changed SupportsGetMesh protocol to be public #7841 [@radarhere] - Release GIL while calling `WebPAnimDecoderGetNext` #7782 [@evanmiller] - Fixed reading FLI/FLC images with a prefix chunk #7804 [@twolife] - Updated package name for Tidelift #7810 [@radarhere] - Removed unused code #7744 [@radarhere] - Lint fix #7783 [@radarhere] - Update wl-paste handling and return None for some errors in grabclipboard() on Linux #7745 [@nik012003] - Fixed libXau error in wheels for macOS 10.10 #7764 [@radarhere] - Changed name of first _Tile parameter #7772 [@radarhere] - Remove execute bit from `setup.py` #7760 [@hugovk] - Changed ImageMath.ops to be static #7721 [@radarhere] - Fix APNG info after seeking backwards more than twice #7701 [@esoma] - Removed PPM loop to read header tokens #7698 [@radarhere] - Added PerspectiveTransform #7699 [@radarhere] - Add support for reading and writing grayscale PFM images #7696 [@nulano] - Add LCMS2 flags to ImageCms #7676 [@nulano] - Rename x64 to AMD64 in winbuild #7693 [@nulano] - Build QEMU-emulated Linux aarch64 wheels on GitHub Actions instead of Travis CI #7690 [@hugovk] - Simplify FreeTypeFont.getmask2() #7645 [@nulano] - Updated Linux and macOS wheels matrix variable name #7691 [@radarhere] - Skip PyPy3.8 Windows wheel #7682 [@radarhere] ## Deprecations - Deprecate eval(), replacing it with lambda_eval() and unsafe_eval() #7927 [@hugovk] - Deprecate ImageCms constants and versions() function #7702 [@nulano] ## Documentation - Add type hints to release notes #7923 [@hugovk] - Corrected exiv2.org links #7856 [@radarhere] - Removed references to the "current version" #7905 [@radarhere] - Added release notes for #7872, #7882 and #7891 #7904 [@radarhere] - Clean up authors and contributors #7895 [@aclark4life] - Update release notes #7885 [@hugovk] - Backfill release notes with security fix details #7877 [@aclark4life] - Describe difference between font size and bbox #7806 [@radarhere] - Decoders and encoders subclass PyDecoder and PyEncoder #7801 [@radarhere] - Update CI targets on GitHub Actions #7862 [@hugovk] - Update "What about PIL?" section #7861 [@aclark4life] - Update installation docs #7858 [@hugovk] - Move installation.rst to installation/*.rst #7832 [@aclark4life] - Removed references to Twitter #7836 [@radarhere] - Consistently place versionremoved under heading #7829 [@radarhere] - Remove outdated installation warnings #7814 [@hugovk] - PyPI project page URL is now lowercase #7703 [@nulano] - Use "non-zero" consistently #7695 [@radarhere] - Improve ImageTransform documentation #7684 [@nulano] - If ImageGrab.grab() bbox is omitted, screenshot is taken at 2x on Retina screens #7688 [@radarhere] - Updated macOS tested Pillow versions #7689 [@radarhere] - Update Windows 11 tested versions #7685 [@nulano] - ImageGrab.grab() bbox on macOS is not 2x on retina screens #7678 [@radarhere] - Package name is now lowercase in wheel filenames #7681 [@radarhere] ## Type hints - Add type hints for ImageCms #7913 [@nulano] - Add type hints to `Image.py` #7924 [@hugovk] - Add type hints to release notes #7923 [@hugovk] - Added `py.typed` and `Typing :: Typed` to support type checking #7822 [@radarhere] - Added remaining type hints to Tests/test_image_*.py #7793 [@radarhere] - Added type hints for ImageShow #7712 [@radarhere] - Added type hints to additional tests #7754 [@radarhere] - Added type hints to additional tests #7755 [@radarhere] - Added type hints to additional tests #7769 [@radarhere] - Added type hints to additional tests #7784 [@radarhere] - Added type hints to additional tests #7794 [@radarhere] - Added type hints to additional tests #7807 [@radarhere] - Added type hints to additional tests #7816 [@radarhere] - Added type hints to additional tests #7846 [@radarhere] - Added type hints to FitsImagePlugin #7714 [@radarhere] - Added type hints to GdImageFile #7727 [@radarhere] - Added type hints to ImageMath #7707 [@radarhere] - Added type hints to ImageMorph #7708 [@radarhere] - Added type hints to ImageOps #7786 [@radarhere] - Added type hints to ImtImagePlugin #7720 [@radarhere] - Added type hints to MpegImagePlugin #7728 [@radarhere] - Added type hints to MspImagePlugin #7719 [@radarhere] - Added type hints to OSS Fuzz scripts #7731 [@radarhere] - Added type hints to PpmImagePlugin #7726 [@radarhere] - Added type hints to seven plugins #7716 [@radarhere] - Added type hints to SgiImagePlugin #7724 [@radarhere] - Added type hints to Tests/check_*.py #7732 [@radarhere] - Added type hints to Tests/conftest.py #7740 [@radarhere] - Added type hints to Tests/helper.py #7733 [@radarhere] - Added type hints to Tests/test_font_*.py #7743 [@radarhere] - Added type hints to TgaImagePlugin #7725 [@radarhere] - Autotype tests #7756 [@hugovk] - Decoders and encoders subclass PyDecoder and PyEncoder #7801 [@radarhere] - Removed mypy excludes #7808 [@radarhere] - Removed mypy excludes, except for olefile-related files #7790 [@radarhere] - Replace `io.BytesIO` in type hints #7750 [@hugovk] - Type hints: Add PYI (flake8-pyi) to Ruff and fix errors #7897 [@hugovk] - Use IO[bytes] in type hints #7795 [@radarhere] ## Dependencies - [pre-commit.ci] pre-commit autoupdate and fix deprecations #7780 [@pre-commit-ci] - Install mypy from requirements file #7813 [@hugovk] - Pin codecov/codecov-action to v3.1.5 #7776 [@hugovk] - Update actions/cache action to v4 #7735 [@renovate] - Update dependency cibuildwheel to v2.16.4 #7758 [@renovate] - Update dependency cibuildwheel to v2.16.5 #7767 [@renovate] - Update dependency cibuildwheel to v2.17.0 #7869 [@renovate] - Update dependency mypy to v1.8.0 #7851 [@renovate] - Update dependency mypy to v1.9.0 #7866 [@renovate] - Update github-actions to v4 #7770 [@renovate] - Update release-drafter/release-drafter action to v6 #7774 [@renovate] - Updated Ghostscript to 10.3.0 #7887 [@radarhere] - Updated giflib on macOS to 5.2.2 #7815 [@radarhere] - Updated harfbuzz to 8.3.1 #7886 [@radarhere] - Updated harfbuzz to 8.4.0 #7917 [@radarhere] - Updated libimagequant to 4.3.0 #7749 [@radarhere] - Updated libjpeg-turbo to 3.0.2 #7752 [@radarhere] - Updated libpng to 1.6.43 #7768 [@radarhere] - Updated libxcb to 1.16.1 #7853 [@radarhere] - Updated openjpeg to 2.5.2 #7837 [@radarhere] - Updated xorgproto to 2024.1 #7907 [@radarhere] - Updated zlib to 1.3.1 #7746 [@radarhere] - ## Testing - Use setup_module() to open images so they aren't opened if skipped #7911 [@Yay295] - Skip AppVeyor builds for irrelevant files #7909 [@hugovk] - Revert "Pin Python 3.13 on Windows to a3" #7878 [@radarhere] - Restored testing of non-TrueType default font #7748 [@radarhere] - Parametrize test_seek_mode functions #7847 [@Yay295] - Do not use packaged MinGW pip #7844 [@radarhere] - Parametrize test_p_from_rgb_rgba() #7835 [@Yay295] - Require coverage.py 7.4.2+ for `COVERAGE_CORE: sysmon` #7825 [@hugovk] - Set `COVERAGE_CORE: sysmon` for faster tests on 3.12+ #7820 [@hugovk] - Build docs for Python changes #7819 [@nulano] - Install mypy from requirements file #7813 [@hugovk] - Pin Python 3.13 on Windows to a3 #7805 [@radarhere] - Removed platform argument from setup-cygwin action #7775 [@radarhere] - Pin to Python 3.9.16-1 #7762 [@radarhere] - Test on macOS M1 where available #7766 [@hugovk] - CI: Cache libimagequant on Linux builds #7741 [@hugovk] - Do not support using test-image-results to upload images after test failures #7739 [@radarhere] - Sort imports in `Tests/` #7736 [@hugovk] - Skip non-wheel CI runs for tags: Windows #7692 [@hugovk]