https://pillow.readthedocs.io/en/stable/releasenotes/9.5.0.html
Changes
- Refactor EpsImagePlugin and deprecate PSFile #6879 [@Yay295]
- Do not discard error message if _imagingft fails to import #7047 [@nulano]
- Added ImageSourceData to TAGS_V2 #7053 [@radarhere]
- Clear PPM half token after use #7052 [@radarhere]
- Do not render text if image has zero width or height #7021 [@radarhere]
- Removed unnecessary silencing of stderr #7046 [@radarhere]
- Fixed compilation warnings #7050 [@radarhere]
- Handle failure from PyDict_New or PyList_New #6999 [@radarhere]
- Removed absolute path to ldconfig #7044 [@radarhere]
- Windows: compile xz with CMake #6947 [@nulano]
- Support custom comments and PLT markers when saving JPEG2000 images #6903 [@joshware]
- 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]
- Allow libtiff_support_custom_tags to be missing #7020 [@radarhere]
- Updated xz to 5.4.2 #7026 [@radarhere]
- Improved I;16N support #6834 [@radarhere]
- Added QOI reading #6852 [@radarhere]
- Added saving RGBA images as PDFs #6925 [@radarhere]
- Do not raise an error if os.environ does not contain PATH #6935 [@radarhere]
- Close OleFileIO instance when closing or exiting FPX or MIC #7005 [@radarhere]
- Added int to IFDRational for Python >= 3.11 #6998 [@radarhere]
- Move potential error earlier #7002 [@radarhere]
- Remove redundant default values #6914 [@radarhere]
- Added memoryview support to Dib.frombytes() #6988 [@radarhere]
- Close file pointer copy in the libtiff encoder if still open #6986 [@fcarron]
- Removed unused profile_fromstring method #6987 [@radarhere]
- Release buffer #6976 [@radarhere]
- Raise an error if ImageDraw co-ordinates are incorrectly ordered #6978 [@radarhere]
- Added "corners" argument to ImageDraw rounded_rectangle() #6954 [@radarhere]
- Clarify some local variable names #6971 [@akx]
- Added memoryview support to frombytes() #6974 [@radarhere]
- Allow comments in FITS images #6973 [@radarhere]
- Relax roundtrip check #6970 [@radarhere]
- Support saving PDF with different X and Y resolutions #6961 [@jvanderneutstulen]
- Relax roundtrip check #6967 [@radarhere]
- Fixed writing int as UNDEFINED tag #6950 [@radarhere]
- Update HPND wording in LICENSE file #6936 [@mtelka]
- Relaxed child images check to allow for libjpeg #6853 [@radarhere]
- Raise an error if EXIF data is too long when saving JPEG #6939 [@radarhere]
- Fixed typo #6940 [@radarhere]
- Sort dependencies #6922 [@radarhere]
- Handle more than one directory returned by pkg-config #6896 [@sebastic]
- Relax ImageQt roundtrip check #6915 [@radarhere]
- Prevent register_open from adding duplicates to ID #6917 [@radarhere]
- Do not retry past formats when loading all formats for the first time #6902 [@radarhere]
- Handling for deprecations to be removed in Pillow 11 #6905 [@hugovk]
- 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]
- Only read when necessary in EpsImagePlugin #6880 [@radarhere]
- Simplify isinstance, key in dict, enumerate #6869 [@hugovk]
- Support arbitrary number of loaded modules on Windows #6761 [@javidcf]
Dependencies
- Install Ghostscript using Chocolatey #7036 [@radarhere]
- Update actions/stale action to v8 #7035 [@renovate]
- Updated libimagequant to 4.1.1 #7000 [@radarhere]
- Updated harfbuzz to 7.1.0 #6983 [@radarhere]
- Updated lcms2 to 2.15 #6981 [@radarhere]
- Updated harfbuzz to 7.0.1 #6959 [@radarhere]
- Updated harfbuzz to 7.0.0 #6946 [@radarhere]
- Updated freetype to 2.13 #6931 [@radarhere]
- Updated libjpeg-turbo to 2.1.5.1 #6929 [@radarhere]
- [pre-commit.ci] pre-commit autoupdate #6928 [@pre-commit-ci]
- Updated libjpeg-turbo to 2.1.5 #6923 [@radarhere]
- pre-commit autoupdate #6920 [@radarhere]
- Updated libimagequant to 4.1.0 #6906 [@radarhere]
- Updated libimagequant to 4.0.5 #6901 [@radarhere]
- Updated libwebp to 1.3.0 #6889 [@radarhere]
- Updated raqm to 0.10.0 #6884 [@radarhere]
- Updated xz to 5.4.1 #6883 [@radarhere]
- [pre-commit.ci] pre-commit autoupdate #6855 [@pre-commit-ci]
Documentation
- Removed unused sections in release notes #7054 [@radarhere]
- Add missing word #7051 [@Yay295]
- Document handling of modes when converting to or from NumPy #7049 [@radarhere]
- Document how to create universal2 wheels #6912 [@radarhere]
- Docs: Replace dependency sphinx-issues with builtin sphinx.ext.extlinks #7016 [@hugovk]
- Minor improvement made to c_extension_debugging.rst #7017 [@Lucas-C]
- Restored deleted docstring #7027 [@radarhere]
- Removed incorrect docstring #7025 [@Auto-5]
- Fix order of arguments in docstring #7024 [@Auto-5]
- Restore link anchor #6993 [@nulano]
- Removed missing anchor from link #6992 [@radarhere]
- Added release notes for #6961 and #6954 #6990 [@radarhere]
- Replace Python code-blocks with double colons #6958 [@radarhere]
- Highlight code example #6969 [@radarhere]
- Corrected documented WebP quality range #6952 [@jzern]
- image-file-formats.rst: document WebP 'xmp' option #6951 [@jzern]
- Add description for getexif() and Exif #6930 [@greatvovan]
- Specify correct description for mode L #6907 [@Pehat]
- Alex Clark -> Jeffrey A. Clark (Alex) #6895 [@aclark4life]
- Updated macOS tested Pillow versions #6885 [@radarhere]
- Verify the Mastodon docs link #6881 [@hugovk]
- List Raqm build options in installation documentation #6876 [@nulano]
- Refer to Resampling enum #6868 [@radarhere]
- LOAD_TRUNCATED_IMAGES may allow PNG images to open #6856 [@radarhere]
- Announce releases on Mastodon #6861 [@radarhere]
Testing
- Added Amazon Linux 2023 docker image #7029 [@radarhere]
- Remove EOL Debian 10 Buster from CI #7014 [@hugovk]
- Moved tests that require libtiff #6919 [@radarhere]
- Moved conversion test to test_imagecms #6866 [@radarhere]
- Run CIFuzz tests when GitHub Actions file changes #6994 [@radarhere]
- Build docs in own workflow #6991 [@hugovk]
- Log expected & actual color in image access tests #6899 [@Yay295]
- Fix up some pytest style issues #6968 [@akx]
- Enable gcov support for codecov/codecov-action #6944 [@hugovk]
- Test Python 3.12-dev #6943 [@hugovk]
- Replace SVN with Git for installing extra test images #6918 [@hugovk]
- Parametrize test_file_tar::test_sanity() #6898 [@Yay295]
- Only install python-pyqt6 package on 64-bit #6886 [@radarhere]
- Tests: Convert internal check() functions to use parametrize #6870 [@hugovk]
- Clean up tests (simplified) #6865 [@Yay295]
- NotImplementedError will not be raised by grapclipboard if xclip is available on Linux #6859 [@radarhere]
- array tobytes() always exists in Python >= 3.2 #6854 [@radarhere]