Pillow versions before v10.0.1 bundled libwebp binaries in wheels that are vulnerable to CVE-2023-5129 (previously CVE-2023-4863). Pillow v10.0.1 upgrades the bundled libwebp binary to v1.3.2.
An issue was discovered in Pillow before 10.0.0. It is a Denial of Service that uncontrollably allocates memory to process a given task, potentially causing a service to crash by having it run out of memory. This occurs for truetype in ImageFont when textlength in an ImageDraw instance operates on a long text argument.
Pillow through 10.1.0 allows PIL.ImageMath.eval Arbitrary Code Execution via the environment parameter, a different vulnerability than CVE-2022-22817 (which was about the expression parameter).
In _imagingcms.c in Pillow before 10.3.0, a buffer overflow exists because strcpy is used instead of strncpy.
Release Notes
python-pillow/Pillow (Pillow)
### [`v10.3.0`](https://redirect.github.com/python-pillow/Pillow/blob/HEAD/CHANGES.rst#1030-2024-04-01)
[Compare Source](https://redirect.github.com/python-pillow/Pillow/compare/10.2.0...10.3.0)
- CVE-2024-28219: Use `strncpy` to avoid buffer overflow [#7928](https://redirect.github.com/python-pillow/Pillow/issues/7928)
\[radarhere, hugovk]
- Deprecate `eval()`, replacing it with `lambda_eval()` and `unsafe_eval()` [#7927](https://redirect.github.com/python-pillow/Pillow/issues/7927)
\[radarhere, hugovk]
- Raise `ValueError` if seeking to greater than offset-sized integer in TIFF [#7883](https://redirect.github.com/python-pillow/Pillow/issues/7883)
\[radarhere]
- Add `--report` argument to `__main__.py` to omit supported formats [#7818](https://redirect.github.com/python-pillow/Pillow/issues/7818)
\[nulano, radarhere, hugovk]
- Added RGB to I;16, I;16L, I;16B and I;16N conversion [#7918](https://redirect.github.com/python-pillow/Pillow/issues/7918), [#7920](https://redirect.github.com/python-pillow/Pillow/issues/7920)
\[radarhere]
- Fix editable installation with custom build backend and configuration options [#7658](https://redirect.github.com/python-pillow/Pillow/issues/7658)
\[nulano, radarhere]
- Fix putdata() for I;16N on big-endian [#7209](https://redirect.github.com/python-pillow/Pillow/issues/7209)
\[Yay295, hugovk, radarhere]
- Determine MPO size from markers, not EXIF data [#7884](https://redirect.github.com/python-pillow/Pillow/issues/7884)
\[radarhere]
- Improved conversion from RGB to RGBa, LA and La [#7888](https://redirect.github.com/python-pillow/Pillow/issues/7888)
\[radarhere]
- Support FITS images with GZIP\_1 compression [#7894](https://redirect.github.com/python-pillow/Pillow/issues/7894)
\[radarhere]
- Use I;16 mode for 9-bit JPEG 2000 images [#7900](https://redirect.github.com/python-pillow/Pillow/issues/7900)
\[scaramallion, radarhere]
- Raise ValueError if kmeans is negative [#7891](https://redirect.github.com/python-pillow/Pillow/issues/7891)
\[radarhere]
- Remove TIFF tag OSUBFILETYPE when saving using libtiff [#7893](https://redirect.github.com/python-pillow/Pillow/issues/7893)
\[radarhere]
- Raise ValueError for negative values when loading P1-P3 PPM images [#7882](https://redirect.github.com/python-pillow/Pillow/issues/7882)
\[radarhere]
- Added reading of JPEG2000 palettes [#7870](https://redirect.github.com/python-pillow/Pillow/issues/7870)
\[radarhere]
- Added alpha_quality argument when saving WebP images [#7872](https://redirect.github.com/python-pillow/Pillow/issues/7872)
\[radarhere]
- Fixed joined corners for ImageDraw rounded_rectangle() non-integer dimensions [#7881](https://redirect.github.com/python-pillow/Pillow/issues/7881)
\[radarhere]
- Stop reading EPS image at EOF marker [#7753](https://redirect.github.com/python-pillow/Pillow/issues/7753)
\[radarhere]
- PSD layer co-ordinates may be negative [#7706](https://redirect.github.com/python-pillow/Pillow/issues/7706)
\[radarhere]
- Use subprocess with CREATE_NO_WINDOW flag in ImageShow WindowsViewer [#7791](https://redirect.github.com/python-pillow/Pillow/issues/7791)
\[radarhere]
- When saving GIF frame that restores to background color, do not fill identical pixels [#7788](https://redirect.github.com/python-pillow/Pillow/issues/7788)
\[radarhere]
- Fixed reading PNG iCCP compression method [#7823](https://redirect.github.com/python-pillow/Pillow/issues/7823)
\[radarhere]
- Allow writing IFDRational to UNDEFINED tag [#7840](https://redirect.github.com/python-pillow/Pillow/issues/7840)
\[radarhere]
- Fix logged tag name when loading Exif data [#7842](https://redirect.github.com/python-pillow/Pillow/issues/7842)
\[radarhere]
- Use maximum frame size in IHDR chunk when saving APNG images [#7821](https://redirect.github.com/python-pillow/Pillow/issues/7821)
\[radarhere]
- Prevent opening P TGA images without a palette [#7797](https://redirect.github.com/python-pillow/Pillow/issues/7797)
\[radarhere]
- Use palette when loading ICO images [#7798](https://redirect.github.com/python-pillow/Pillow/issues/7798)
\[radarhere]
- Use consistent arguments for load_read and load_seek [#7713](https://redirect.github.com/python-pillow/Pillow/issues/7713)
\[radarhere]
- Turn off nullability warnings for macOS SDK [#7827](https://redirect.github.com/python-pillow/Pillow/issues/7827)
\[radarhere]
- Fix shift-sign issue in Convert.c [#7838](https://redirect.github.com/python-pillow/Pillow/issues/7838)
\[r-barnes, radarhere]
- Open 16-bit grayscale PNGs as I;16 [#7849](https://redirect.github.com/python-pillow/Pillow/issues/7849)
\[radarhere]
- Handle truncated chunks at the end of PNG images [#7709](https://redirect.github.com/python-pillow/Pillow/issues/7709)
\[lajiyuan, radarhere]
- Match mask size to pasted image size in GifImagePlugin [#7779](https://redirect.github.com/python-pillow/Pillow/issues/7779)
\[radarhere]
- Release GIL while calling `WebPAnimDecoderGetNext` [#7782](https://redirect.github.com/python-pillow/Pillow/issues/7782)
\[evanmiller, radarhere]
- Fixed reading FLI/FLC images with a prefix chunk [#7804](https://redirect.github.com/python-pillow/Pillow/issues/7804)
\[twolife]
- Update wl-paste handling and return None for some errors in grabclipboard() on Linux [#7745](https://redirect.github.com/python-pillow/Pillow/issues/7745)
\[nik012003, radarhere]
- Remove execute bit from `setup.py` [#7760](https://redirect.github.com/python-pillow/Pillow/issues/7760)
\[hugovk]
- Do not support using test-image-results to upload images after test failures [#7739](https://redirect.github.com/python-pillow/Pillow/issues/7739)
\[radarhere]
- Changed ImageMath.ops to be static [#7721](https://redirect.github.com/python-pillow/Pillow/issues/7721)
\[radarhere]
- Fix APNG info after seeking backwards more than twice [#7701](https://redirect.github.com/python-pillow/Pillow/issues/7701)
\[esoma, radarhere]
- Deprecate ImageCms constants and versions() function [#7702](https://redirect.github.com/python-pillow/Pillow/issues/7702)
\[nulano, radarhere]
- Added PerspectiveTransform [#7699](https://redirect.github.com/python-pillow/Pillow/issues/7699)
\[radarhere]
- Add support for reading and writing grayscale PFM images [#7696](https://redirect.github.com/python-pillow/Pillow/issues/7696)
\[nulano, hugovk]
- Add LCMS2 flags to ImageCms [#7676](https://redirect.github.com/python-pillow/Pillow/issues/7676)
\[nulano, radarhere, hugovk]
- Rename x64 to AMD64 in winbuild [#7693](https://redirect.github.com/python-pillow/Pillow/issues/7693)
\[nulano]
### [`v10.2.0`](https://redirect.github.com/python-pillow/Pillow/blob/HEAD/CHANGES.rst#1020-2024-01-02)
[Compare Source](https://redirect.github.com/python-pillow/Pillow/compare/10.1.0...10.2.0)
- Add `keep_rgb` option when saving JPEG to prevent conversion of RGB colorspace [#7553](https://redirect.github.com/python-pillow/Pillow/issues/7553)
\[bgilbert, radarhere]
- Trim glyph size in ImageFont.getmask() [#7669](https://redirect.github.com/python-pillow/Pillow/issues/7669), [#7672](https://redirect.github.com/python-pillow/Pillow/issues/7672)
\[radarhere, nulano]
- Deprecate IptcImagePlugin helpers [#7664](https://redirect.github.com/python-pillow/Pillow/issues/7664)
\[nulano, hugovk, radarhere]
- Allow uncompressed TIFF images to be saved in chunks [#7650](https://redirect.github.com/python-pillow/Pillow/issues/7650)
\[radarhere]
- Concatenate multiple JPEG EXIF markers [#7496](https://redirect.github.com/python-pillow/Pillow/issues/7496)
\[radarhere]
- Changed IPTC tile tuple to match other plugins [#7661](https://redirect.github.com/python-pillow/Pillow/issues/7661)
\[radarhere]
- Do not assign new fp attribute when exiting context manager [#7566](https://redirect.github.com/python-pillow/Pillow/issues/7566)
\[radarhere]
- Support arbitrary masks for uncompressed RGB DDS images [#7589](https://redirect.github.com/python-pillow/Pillow/issues/7589)
\[radarhere, akx]
- Support setting ROWSPERSTRIP tag [#7654](https://redirect.github.com/python-pillow/Pillow/issues/7654)
\[radarhere]
- Apply ImageFont.MAX_STRING_LENGTH to ImageFont.getmask() [#7662](https://redirect.github.com/python-pillow/Pillow/issues/7662)
\[radarhere]
- Optimise `ImageColor` using `functools.lru_cache` [#7657](https://redirect.github.com/python-pillow/Pillow/issues/7657)
\[hugovk]
- Restricted environment keys for ImageMath.eval() [#7655](https://redirect.github.com/python-pillow/Pillow/issues/7655)
\[wiredfool, radarhere]
- Optimise `ImageMode.getmode` using `functools.lru_cache` [#7641](https://redirect.github.com/python-pillow/Pillow/issues/7641)
\[hugovk, radarhere]
- Fix incorrect color blending for overlapping glyphs [#7497](https://redirect.github.com/python-pillow/Pillow/issues/7497)
\[ZachNagengast, nulano, radarhere]
- Attempt memory mapping when tile args is a string [#7565](https://redirect.github.com/python-pillow/Pillow/issues/7565)
\[radarhere]
- Fill identical pixels with transparency in subsequent frames when saving GIF [#7568](https://redirect.github.com/python-pillow/Pillow/issues/7568)
\[radarhere]
- Corrected duration when combining multiple GIF frames into single frame [#7521](https://redirect.github.com/python-pillow/Pillow/issues/7521)
\[radarhere]
- Handle disposing GIF background from outside palette [#7515](https://redirect.github.com/python-pillow/Pillow/issues/7515)
\[radarhere]
- Seek past the data when skipping a PSD layer [#7483](https://redirect.github.com/python-pillow/Pillow/issues/7483)
\[radarhere]
- Import plugins relative to the module [#7576](https://redirect.github.com/python-pillow/Pillow/issues/7576)
\[deliangyang, jaxx0n]
- Translate encoder error codes to strings; deprecate `ImageFile.raise_oserror()` [#7609](https://redirect.github.com/python-pillow/Pillow/issues/7609)
\[bgilbert, radarhere]
- Support reading BC4U and DX10 BC1 images [#6486](https://redirect.github.com/python-pillow/Pillow/issues/6486)
\[REDxEYE, radarhere, hugovk]
- Optimize ImageStat.Stat.extrema [#7593](https://redirect.github.com/python-pillow/Pillow/issues/7593)
\[florath, radarhere]
- Handle pathlib.Path in FreeTypeFont [#7578](https://redirect.github.com/python-pillow/Pillow/issues/7578)
\[radarhere, hugovk, nulano]
- Added support for reading DX10 BC4 DDS images [#7603](https://redirect.github.com/python-pillow/Pillow/issues/7603)
\[sambvfx, radarhere]
- Optimized ImageStat.Stat.count [#7599](https://redirect.github.com/python-pillow/Pillow/issues/7599)
\[florath]
- Correct PDF palette size when saving [#7555](https://redirect.github.com/python-pillow/Pillow/issues/7555)
\[radarhere]
- Fixed closing file pointer with olefile 0.47 [#7594](https://redirect.github.com/python-pillow/Pillow/issues/7594)
\[radarhere]
- Raise ValueError when TrueType font size is not greater than zero [#7584](https://redirect.github.com/python-pillow/Pillow/issues/7584), [#7587](https://redirect.github.com/python-pillow/Pillow/issues/7587)
\[akx, radarhere]
- If absent, do not try to close fp when closing image [#7557](https://redirect.github.com/python-pillow/Pillow/issues/7557)
\[RaphaelVRossi, radarhere]
- Allow configuring JPEG restart marker interval on save [#7488](https://redirect.github.com/python-pillow/Pillow/issues/7488)
\[bgilbert, radarhere]
- Decrement reference count for PyObject [#7549](https://redirect.github.com/python-pillow/Pillow/issues/7549)
\[radarhere]
- Implement `streamtype=1` option for tables-only JPEG encoding [#7491](https://redirect.github.com/python-pillow/Pillow/issues/7491)
\[bgilbert, radarhere]
- If save_all PNG only has one frame, do not create animated image [#7522](https://redirect.github.com/python-pillow/Pillow/issues/7522)
\[radarhere]
- Fixed frombytes() for images with a zero dimension [#7493](https://redirect.github.com/python-pillow/Pillow/issues/7493)
\[radarhere]
### [`v10.1.0`](https://redirect.github.com/python-pillow/Pillow/blob/HEAD/CHANGES.rst#1010-2023-10-15)
[Compare Source](https://redirect.github.com/python-pillow/Pillow/compare/10.0.1...10.1.0)
- Added TrueType default font to allow for different sizes [#7354](https://redirect.github.com/python-pillow/Pillow/issues/7354)
\[radarhere]
- Fixed invalid argument warning [#7442](https://redirect.github.com/python-pillow/Pillow/issues/7442)
\[radarhere]
- Added ImageOps cover method [#7412](https://redirect.github.com/python-pillow/Pillow/issues/7412)
\[radarhere, hugovk]
- Catch struct.error from truncated EXIF when reading JPEG DPI [#7458](https://redirect.github.com/python-pillow/Pillow/issues/7458)
\[radarhere]
- Consider default image when selecting mode for PNG save_all [#7437](https://redirect.github.com/python-pillow/Pillow/issues/7437)
\[radarhere]
- Support BGR;15, BGR;16 and BGR;24 access, unpacking and putdata [#7303](https://redirect.github.com/python-pillow/Pillow/issues/7303)
\[radarhere]
- Added CMYK to RGB unpacker [#7310](https://redirect.github.com/python-pillow/Pillow/issues/7310)
\[radarhere]
- Improved flexibility of XMP parsing [#7274](https://redirect.github.com/python-pillow/Pillow/issues/7274)
\[radarhere]
- Support reading 8-bit YCbCr TIFF images [#7415](https://redirect.github.com/python-pillow/Pillow/issues/7415)
\[radarhere]
- Allow saving I;16B images as PNG [#7302](https://redirect.github.com/python-pillow/Pillow/issues/7302)
\[radarhere]
- Corrected drawing I;16 points and writing I;16 text [#7257](https://redirect.github.com/python-pillow/Pillow/issues/7257)
\[radarhere]
- Set blue channel to 128 for BC5S [#7413](https://redirect.github.com/python-pillow/Pillow/issues/7413)
\[radarhere]
- Increase flexibility when reading IPTC fields [#7319](https://redirect.github.com/python-pillow/Pillow/issues/7319)
\[radarhere]
- Set C palette to be empty by default [#7289](https://redirect.github.com/python-pillow/Pillow/issues/7289)
\[radarhere]
- Added gs_binary to control Ghostscript use on all platforms [#7392](https://redirect.github.com/python-pillow/Pillow/issues/7392)
\[radarhere]
- Read bounding box information from the trailer of EPS files if specified [#7382](https://redirect.github.com/python-pillow/Pillow/issues/7382)
\[nopperl, radarhere]
- Added reading 8-bit color DDS images [#7426](https://redirect.github.com/python-pillow/Pillow/issues/7426)
\[radarhere]
- Added has_transparency_data [#7420](https://redirect.github.com/python-pillow/Pillow/issues/7420)
\[radarhere, hugovk]
- Fixed bug when reading BC5S DDS images [#7401](https://redirect.github.com/python-pillow/Pillow/issues/7401)
\[radarhere]
- Prevent TIFF orientation from being applied more than once [#7383](https://redirect.github.com/python-pillow/Pillow/issues/7383)
\[radarhere]
- Use previous pixel alpha for QOI_OP_RGB [#7357](https://redirect.github.com/python-pillow/Pillow/issues/7357)
\[radarhere]
- Added BC5U reading [#7358](https://redirect.github.com/python-pillow/Pillow/issues/7358)
\[radarhere]
- Allow getpixel() to accept a list [#7355](https://redirect.github.com/python-pillow/Pillow/issues/7355)
\[radarhere, homm]
- Allow GaussianBlur and BoxBlur to accept a sequence of x and y radii [#7336](https://redirect.github.com/python-pillow/Pillow/issues/7336)
\[radarhere]
- Expand JPEG buffer size when saving optimized or progressive [#7345](https://redirect.github.com/python-pillow/Pillow/issues/7345)
\[radarhere]
- Added session type check for Linux in ImageGrab.grabclipboard() [#7332](https://redirect.github.com/python-pillow/Pillow/issues/7332)
\[TheNooB2706, radarhere, hugovk]
- Allow "loop=None" when saving GIF images [#7329](https://redirect.github.com/python-pillow/Pillow/issues/7329)
\[radarhere]
- Fixed transparency when saving P mode images to PDF [#7323](https://redirect.github.com/python-pillow/Pillow/issues/7323)
\[radarhere]
- Added saving LA images as PDFs [#7299](https://redirect.github.com/python-pillow/Pillow/issues/7299)
\[radarhere]
- Set SMaskInData to 1 for PDFs with alpha [#7316](https://redirect.github.com/python-pillow/Pillow/issues/7316), [#7317](https://redirect.github.com/python-pillow/Pillow/issues/7317)
\[radarhere]
- Changed Image mode property to be read-only by default [#7307](https://redirect.github.com/python-pillow/Pillow/issues/7307)
\[radarhere]
- Silence exceptions in *repr_jpeg* and *repr_png* [#7266](https://redirect.github.com/python-pillow/Pillow/issues/7266)
\[mtreinish, radarhere]
- Do not use transparency when saving GIF if it has been removed when normalizing mode [#7284](https://redirect.github.com/python-pillow/Pillow/issues/7284)
\[radarhere]
- Fix missing symbols when libtiff depends on libjpeg [#7270](https://redirect.github.com/python-pillow/Pillow/issues/7270)
\[heitbaum]
### [`v10.0.1`](https://redirect.github.com/python-pillow/Pillow/blob/HEAD/CHANGES.rst#1001-2023-09-15)
[Compare Source](https://redirect.github.com/python-pillow/Pillow/compare/10.0.0...10.0.1)
- Updated libwebp to 1.3.2 [#7395](https://redirect.github.com/python-pillow/Pillow/issues/7395)
\[radarhere]
- Updated zlib to 1.3 [#7344](https://redirect.github.com/python-pillow/Pillow/issues/7344)
\[radarhere]
### [`v10.0.0`](https://redirect.github.com/python-pillow/Pillow/blob/HEAD/CHANGES.rst#1000-2023-07-01)
[Compare Source](https://redirect.github.com/python-pillow/Pillow/compare/9.5.0...10.0.0)
- Fixed deallocating mask images [#7246](https://redirect.github.com/python-pillow/Pillow/issues/7246)
\[radarhere]
- Added ImageFont.MAX_STRING_LENGTH [#7244](https://redirect.github.com/python-pillow/Pillow/issues/7244)
\[radarhere, hugovk]
- Fix Windows build with pyproject.toml [#7230](https://redirect.github.com/python-pillow/Pillow/issues/7230)
\[hugovk, nulano, radarhere]
- Do not close provided file handles with libtiff [#7199](https://redirect.github.com/python-pillow/Pillow/issues/7199)
\[radarhere]
- Convert to HSV if mode is HSV in getcolor() [#7226](https://redirect.github.com/python-pillow/Pillow/issues/7226)
\[radarhere]
- Added alpha_only argument to getbbox() [#7123](https://redirect.github.com/python-pillow/Pillow/issues/7123)
\[radarhere. hugovk]
- Prioritise speed in *repr_png* [#7242](https://redirect.github.com/python-pillow/Pillow/issues/7242)
\[radarhere]
- Do not use CFFI access by default on PyPy [#7236](https://redirect.github.com/python-pillow/Pillow/issues/7236)
\[radarhere]
- Limit size even if one dimension is zero in decompression bomb check [#7235](https://redirect.github.com/python-pillow/Pillow/issues/7235)
\[radarhere]
- Use --config-settings instead of deprecated --global-option [#7171](https://redirect.github.com/python-pillow/Pillow/issues/7171)
\[radarhere]
- Better C integer definitions [#6645](https://redirect.github.com/python-pillow/Pillow/issues/6645)
\[Yay295, hugovk]
- Fixed finding dependencies on Cygwin [#7175](https://redirect.github.com/python-pillow/Pillow/issues/7175)
\[radarhere]
- Changed grabclipboard() to use PNG instead of JPG compression on macOS [#7219](https://redirect.github.com/python-pillow/Pillow/issues/7219)
\[abey79, radarhere]
- Added in_place argument to ImageOps.exif_transpose() [#7092](https://redirect.github.com/python-pillow/Pillow/issues/7092)
\[radarhere]
- Fixed calling putpalette() on L and LA images before load() [#7187](https://redirect.github.com/python-pillow/Pillow/issues/7187)
\[radarhere]
- Fixed saving TIFF multiframe images with LONG8 tag types [#7078](https://redirect.github.com/python-pillow/Pillow/issues/7078)
\[radarhere]
- Fixed combining single duration across duplicate APNG frames [#7146](https://redirect.github.com/python-pillow/Pillow/issues/7146)
\[radarhere]
- Remove temporary file when error is raised [#7148](https://redirect.github.com/python-pillow/Pillow/issues/7148)
\[radarhere]
- Do not use temporary file when grabbing clipboard on Linux [#7200](https://redirect.github.com/python-pillow/Pillow/issues/7200)
\[radarhere]
- If the clipboard fails to open on Windows, wait and try again [#7141](https://redirect.github.com/python-pillow/Pillow/issues/7141)
\[radarhere]
- Fixed saving multiple 1 mode frames to GIF [#7181](https://redirect.github.com/python-pillow/Pillow/issues/7181)
\[radarhere]
- Replaced absolute PIL import with relative import [#7173](https://redirect.github.com/python-pillow/Pillow/issues/7173)
\[radarhere]
- Replaced deprecated Py_FileSystemDefaultEncoding for Python >= 3.12 [#7192](https://redirect.github.com/python-pillow/Pillow/issues/7192)
\[radarhere]
- Improved wl-paste mimetype handling in ImageGrab [#7094](https://redirect.github.com/python-pillow/Pillow/issues/7094)
\[rrcgat, radarhere]
- Added *repr_jpeg*() for IPython display_jpeg [#7135](https://redirect.github.com/python-pillow/Pillow/issues/7135)
\[n3011, radarhere, nulano]
- Use "/sbin/ldconfig" if ldconfig is not found [#7068](https://redirect.github.com/python-pillow/Pillow/issues/7068)
\[radarhere]
- Prefer screenshots using XCB over gnome-screenshot [#7143](https://redirect.github.com/python-pillow/Pillow/issues/7143)
\[nulano, radarhere]
- Fixed joined corners for ImageDraw rounded_rectangle() odd dimensions [#7151](https://redirect.github.com/python-pillow/Pillow/issues/7151)
\[radarhere]
- Support reading signed 8-bit TIFF images [#7111](https://redirect.github.com/python-pillow/Pillow/issues/7111)
\[radarhere]
- Added width argument to ImageDraw regular_polygon [#7132](https://redirect.github.com/python-pillow/Pillow/issues/7132)
\[radarhere]
- Support I mode for ImageFilter.BuiltinFilter [#7108](https://redirect.github.com/python-pillow/Pillow/issues/7108)
\[radarhere]
- Raise error from stderr of Linux ImageGrab.grabclipboard() command [#7112](https://redirect.github.com/python-pillow/Pillow/issues/7112)
\[radarhere]
- Added unpacker from I;16B to I;16 [#7125](https://redirect.github.com/python-pillow/Pillow/issues/7125)
\[radarhere]
- Support float font sizes [#7107](https://redirect.github.com/python-pillow/Pillow/issues/7107)
\[radarhere]
- Use later value for duplicate xref entries in PdfParser [#7102](https://redirect.github.com/python-pillow/Pillow/issues/7102)
\[radarhere]
- Load before getting size in **getstate** [#7105](https://redirect.github.com/python-pillow/Pillow/issues/7105)
\[bigcat88, radarhere]
- Fixed type handling for include and lib directories [#7069](https://redirect.github.com/python-pillow/Pillow/issues/7069)
\[adisbladis, radarhere]
- Remove deprecations for Pillow 10.0.0 [#7059](https://redirect.github.com/python-pillow/Pillow/issues/7059), [#7080](https://redirect.github.com/python-pillow/Pillow/issues/7080)
\[hugovk, radarhere]
- Drop support for soon-EOL Python 3.7 [#7058](https://redirect.github.com/python-pillow/Pillow/issues/7058)
\[hugovk, radarhere]
### [`v9.5.0`](https://redirect.github.com/python-pillow/Pillow/blob/HEAD/CHANGES.rst#950-2023-04-01)
[Compare Source](https://redirect.github.com/python-pillow/Pillow/compare/9.4.0...9.5.0)
- Added ImageSourceData to TAGS_V2 [#7053](https://redirect.github.com/python-pillow/Pillow/issues/7053)
\[radarhere]
- Clear PPM half token after use [#7052](https://redirect.github.com/python-pillow/Pillow/issues/7052)
\[radarhere]
- Removed absolute path to ldconfig [#7044](https://redirect.github.com/python-pillow/Pillow/issues/7044)
\[radarhere]
- Support custom comments and PLT markers when saving JPEG2000 images [#6903](https://redirect.github.com/python-pillow/Pillow/issues/6903)
\[joshware, radarhere, hugovk]
- Load before getting size in **array_interface** [#7034](https://redirect.github.com/python-pillow/Pillow/issues/7034)
\[radarhere]
- Support creating BGR;15, BGR;16 and BGR;24 images, but drop support for BGR;32 [#7010](https://redirect.github.com/python-pillow/Pillow/issues/7010)
\[radarhere]
- Consider transparency when applying APNG blend mask [#7018](https://redirect.github.com/python-pillow/Pillow/issues/7018)
\[radarhere]
- Round duration when saving animated WebP images [#6996](https://redirect.github.com/python-pillow/Pillow/issues/6996)
\[radarhere]
- Added reading of JPEG2000 comments [#6909](https://redirect.github.com/python-pillow/Pillow/issues/6909)
\[radarhere]
- Decrement reference count [#7003](https://redirect.github.com/python-pillow/Pillow/issues/7003)
\[radarhere, nulano]
- Allow libtiff_support_custom_tags to be missing [#7020](https://redirect.github.com/python-pillow/Pillow/issues/7020)
\[radarhere]
- Improved I;16N support [#6834](https://redirect.github.com/python-pillow/Pillow/issues/6834)
\[radarhere]
- Added QOI reading [#6852](https://redirect.github.com/python-pillow/Pillow/issues/6852)
\[radarhere, hugovk]
- Added saving RGBA images as PDFs [#6925](https://redirect.github.com/python-pillow/Pillow/issues/6925)
\[radarhere]
- Do not raise an error if os.environ does not contain PATH [#6935](https://redirect.github.com/python-pillow/Pillow/issues/6935)
\[radarhere, hugovk]
- Close OleFileIO instance when closing or exiting FPX or MIC [#7005](https://redirect.github.com/python-pillow/Pillow/issues/7005)
\[radarhere]
- Added **int** to IFDRational for Python >= 3.11 [#6998](https://redirect.github.com/python-pillow/Pillow/issues/6998)
\[radarhere]
- Added memoryview support to Dib.frombytes() [#6988](https://redirect.github.com/python-pillow/Pillow/issues/6988)
\[radarhere, nulano]
- Close file pointer copy in the libtiff encoder if still open [#6986](https://redirect.github.com/python-pillow/Pillow/issues/6986)
\[fcarron, radarhere]
- Raise an error if ImageDraw co-ordinates are incorrectly ordered [#6978](https://redirect.github.com/python-pillow/Pillow/issues/6978)
\[radarhere]
- Added "corners" argument to ImageDraw rounded_rectangle() [#6954](https://redirect.github.com/python-pillow/Pillow/issues/6954)
\[radarhere]
- Added memoryview support to frombytes() [#6974](https://redirect.github.com/python-pillow/Pillow/issues/6974)
\[radarhere]
- Allow comments in FITS images [#6973](https://redirect.github.com/python-pillow/Pillow/issues/6973)
\[radarhere]
- Support saving PDF with different X and Y resolutions [#6961](https://redirect.github.com/python-pillow/Pillow/issues/6961)
\[jvanderneutstulen, radarhere, hugovk]
- Fixed writing int as UNDEFINED tag [#6950](https://redirect.github.com/python-pillow/Pillow/issues/6950)
\[radarhere]
- Raise an error if EXIF data is too long when saving JPEG [#6939](https://redirect.github.com/python-pillow/Pillow/issues/6939)
\[radarhere]
- Handle more than one directory returned by pkg-config [#6896](https://redirect.github.com/python-pillow/Pillow/issues/6896)
\[sebastic, radarhere]
- Do not retry past formats when loading all formats for the first time [#6902](https://redirect.github.com/python-pillow/Pillow/issues/6902)
\[radarhere]
- Do not retry specified formats if they failed when opening [#6893](https://redirect.github.com/python-pillow/Pillow/issues/6893)
\[radarhere]
- Do not unintentionally load TIFF format at first [#6892](https://redirect.github.com/python-pillow/Pillow/issues/6892)
\[radarhere]
- Stop reading when EPS line becomes too long [#6897](https://redirect.github.com/python-pillow/Pillow/issues/6897)
\[radarhere]
- Allow writing IFDRational to BYTE tag [#6890](https://redirect.github.com/python-pillow/Pillow/issues/6890)
\[radarhere]
- Raise ValueError for BoxBlur filter with negative radius [#6874](https://redirect.github.com/python-pillow/Pillow/issues/6874)
\[hugovk, radarhere]
- Support arbitrary number of loaded modules on Windows [#6761](https://redirect.github.com/python-pillow/Pillow/issues/6761)
\[javidcf, radarhere, nulano]
### [`v9.4.0`](https://redirect.github.com/python-pillow/Pillow/blob/HEAD/CHANGES.rst#940-2023-01-02)
[Compare Source](https://redirect.github.com/python-pillow/Pillow/compare/9.3.0...9.4.0)
- Fixed null pointer dereference crash with malformed font [#6846](https://redirect.github.com/python-pillow/Pillow/issues/6846)
\[wiredfool, radarhere]
- Return from ImagingFill early if image has a zero dimension [#6842](https://redirect.github.com/python-pillow/Pillow/issues/6842)
\[radarhere]
- Reversed deprecations for Image constants, except for duplicate Resampling attributes [#6830](https://redirect.github.com/python-pillow/Pillow/issues/6830)
\[radarhere]
- Improve exception traceback readability [#6836](https://redirect.github.com/python-pillow/Pillow/issues/6836)
\[hugovk, radarhere]
- Do not attempt to read IFD1 if absent [#6840](https://redirect.github.com/python-pillow/Pillow/issues/6840)
\[radarhere]
- Fixed writing int as ASCII tag [#6800](https://redirect.github.com/python-pillow/Pillow/issues/6800)
\[radarhere]
- If available, use wl-paste or xclip for grabclipboard() on Linux [#6783](https://redirect.github.com/python-pillow/Pillow/issues/6783)
\[radarhere]
- Added signed option when saving JPEG2000 images [#6709](https://redirect.github.com/python-pillow/Pillow/issues/6709)
\[radarhere]
- Patch OpenJPEG to include ARM64 fix [#6718](https://redirect.github.com/python-pillow/Pillow/issues/6718)
\[radarhere]
- Added support for I;16 modes in putdata() [#6825](https://redirect.github.com/python-pillow/Pillow/issues/6825)
\[radarhere]
- Added conversion from RGBa to RGB [#6708](https://redirect.github.com/python-pillow/Pillow/issues/6708)
\[radarhere]
- Added DDS support for uncompressed L and LA images [#6820](https://redirect.github.com/python-pillow/Pillow/issues/6820)
\[radarhere, REDxEYE]
- Added LightSource tag values to ExifTags [#6749](https://redirect.github.com/python-pillow/Pillow/issues/6749)
\[radarhere]
- Fixed PyAccess after changing ICO size [#6821](https://redirect.github.com/python-pillow/Pillow/issues/6821)
\[radarhere]
- Do not use EXIF from info when saving PNG images [#6819](https://redirect.github.com/python-pillow/Pillow/issues/6819)
\[radarhere]
- Fixed saving EXIF data to MPO [#6817](https://redirect.github.com/python-pillow/Pillow/issues/6817)
\[radarhere]
- Added Exif hide_offsets() [#6762](https://redirect.github.com/python-pillow/Pillow/issues/6762)
\[radarhere]
- Only compare to previous frame when checking for duplicate GIF frames while saving [#6787](https://redirect.github.com/python-pillow/Pillow/issues/6787)
\[radarhere]
- Always initialize all plugins in registered_extensions() [#6811](https://redirect.github.com/python-pillow/Pillow/issues/6811)
\[radarhere]
- Ignore non-opaque WebP background when saving as GIF [#6792](https://redirect.github.com/python-pillow/Pillow/issues/6792)
\[radarhere]
- Only set tile in ImageFile **setstate** [#6793](https://redirect.github.com/python-pillow/Pillow/issues/6793)
\[radarhere]
- When reading BLP, do not trust JPEG decoder to determine image is CMYK [#6767](https://redirect.github.com/python-pillow/Pillow/issues/6767)
\[radarhere]
- Added IFD enum to ExifTags [#6748](https://redirect.github.com/python-pillow/Pillow/issues/6748)
\[radarhere]
- Fixed bug combining GIF frame durations [#6779](https://redirect.github.com/python-pillow/Pillow/issues/6779)
\[radarhere]
- Support saving JPEG comments [#6774](https://redirect.github.com/python-pillow/Pillow/issues/6774)
\[smason, radarhere]
- Added getxmp() to WebPImagePlugin [#6758](https://redirect.github.com/python-pillow/Pillow/issues/6758)
\[radarhere]
- Added "exact" option when saving WebP [#6747](https://redirect.github.com/python-pillow/Pillow/issues/6747)
\[ashafaei, radarhere]
- Use fractional coordinates when drawing text [#6722](https://redirect.github.com/python-pillow/Pillow/issues/6722)
\[radarhere]
- Fixed writing int as BYTE tag [#6740](https://redirect.github.com/python-pillow/Pillow/issues/6740)
\[radarhere]
- Added MP Format Version when saving MPO [#6735](https://redirect.github.com/python-pillow/Pillow/issues/6735)
\[radarhere]
- Added Interop to ExifTags [#6724](https://redirect.github.com/python-pillow/Pillow/issues/6724)
\[radarhere]
- CVE-2007-4559 patch when building on Windows [#6704](https://redirect.github.com/python-pillow/Pillow/issues/6704)
\[TrellixVulnTeam, nulano, radarhere]
- Fix compiler warning: accessing 64 bytes in a region of size 48 [#6714](https://redirect.github.com/python-pillow/Pillow/issues/6714)
\[wiredfool]
- Use verbose flag for pip install [#6713](https://redirect.github.com/python-pillow/Pillow/issues/6713)
\[wiredfool, radarhere]
### [`v9.3.0`](https://redirect.github.com/python-pillow/Pillow/blob/HEAD/CHANGES.rst#930-2022-10-29)
[Compare Source](https://redirect.github.com/python-pillow/Pillow/compare/9.2.0...9.3.0)
- Limit SAMPLESPERPIXEL to avoid runtime DOS [#6700](https://redirect.github.com/python-pillow/Pillow/issues/6700)
\[wiredfool]
- Initialize libtiff buffer when saving [#6699](https://redirect.github.com/python-pillow/Pillow/issues/6699)
\[radarhere]
- Inline fname2char to fix memory leak [#6329](https://redirect.github.com/python-pillow/Pillow/issues/6329)
\[nulano]
- Fix memory leaks related to text features [#6330](https://redirect.github.com/python-pillow/Pillow/issues/6330)
\[nulano]
- Use double quotes for version check on old CPython on Windows [#6695](https://redirect.github.com/python-pillow/Pillow/issues/6695)
\[hugovk]
- Remove backup implementation of Round for Windows platforms [#6693](https://redirect.github.com/python-pillow/Pillow/issues/6693)
\[cgohlke]
- Fixed set_variation_by_name offset [#6445](https://redirect.github.com/python-pillow/Pillow/issues/6445)
\[radarhere]
- Fix malloc in \_imagingft.c:font_setvaraxes [#6690](https://redirect.github.com/python-pillow/Pillow/issues/6690)
\[cgohlke]
- Release Python GIL when converting images using matrix operations [#6418](https://redirect.github.com/python-pillow/Pillow/issues/6418)
\[hmaarrfk]
- Added ExifTags enums [#6630](https://redirect.github.com/python-pillow/Pillow/issues/6630)
\[radarhere]
- Do not modify previous frame when calculating delta in PNG [#6683](https://redirect.github.com/python-pillow/Pillow/issues/6683)
\[radarhere]
- Added support for reading BMP images with RLE4 compression [#6674](https://redirect.github.com/python-pillow/Pillow/issues/6674)
\[npjg, radarhere]
- Decode JPEG compressed BLP1 data in original mode [#6678](https://redirect.github.com/python-pillow/Pillow/issues/6678)
\[radarhere]
- Added GPS TIFF tag info [#6661](https://redirect.github.com/python-pillow/Pillow/issues/6661)
\[radarhere]
- Added conversion between RGB/RGBA/RGBX and LAB [#6647](https://redirect.github.com/python-pillow/Pillow/issues/6647)
\[radarhere]
- Do not attempt normalization if mode is already normal [#6644](https://redirect.github.com/python-pillow/Pillow/issues/6644)
\[radarhere]
- Fixed seeking to an L frame in a GIF [#6576](https://redirect.github.com/python-pillow/Pillow/issues/6576)
\[radarhere]
- Consider all frames when selecting mode for PNG save_all [#6610](https://redirect.github.com/python-pillow/Pillow/issues/6610)
\[radarhere]
- Don't reassign crc on ChunkStream close [#6627](https://redirect.github.com/python-pillow/Pillow/issues/6627)
\[wiredfool, radarhere]
- Raise a warning if NumPy failed to raise an error during conversion [#6594](https://redirect.github.com/python-pillow/Pillow/issues/6594)
\[radarhere]
- Show all frames in ImageShow [#6611](https://redirect.github.com/python-pillow/Pillow/issues/6611)
\[radarhere]
- Allow FLI palette chunk to not be first [#6626](https://redirect.github.com/python-pillow/Pillow/issues/6626)
\[radarhere]
- If first GIF frame has transparency for RGB_ALWAYS loading strategy, use RGBA mode [#6592](https://redirect.github.com/python-pillow/Pillow/issues/6592)
\[radarhere]
- Round box position to integer when pasting embedded color [#6517](https://redirect.github.com/python-pillow/Pillow/issues/6517)
\[radarhere, nulano]
- Removed EXIF prefix when saving WebP [#6582](https://redirect.github.com/python-pillow/Pillow/issues/6582)
\[radarhere]
- Pad IM palette to 768 bytes when saving [#6579](https://redirect.github.com/python-pillow/Pillow/issues/6579)
\[radarhere]
- Added DDS BC6H reading [#6449](https://redirect.github.com/python-pillow/Pillow/issues/6449)
\[ShadelessFox, REDxEYE, radarhere]
- Added support for opening WhiteIsZero 16-bit integer TIFF images [#6642](https://redirect.github.com/python-pillow/Pillow/issues/6642)
\[JayWiz, radarhere]
- Raise an error when allocating translucent color to RGB palette [#6654](https://redirect.github.com/python-pillow/Pillow/issues/6654)
\[jsbueno, radarhere]
- Added reading of TIFF child images [#6569](https://redirect.github.com/python-pillow/Pillow/issues/6569)
\[radarhere]
- Improved ImageOps palette handling [#6596](https://redirect.github.com/python-pillow/Pillow/issues/6596)
\[PososikTeam, radarhere]
- Defer parsing of palette into colors [#6567](https://redirect.github.com/python-pillow/Pillow/issues/6567)
\[radarhere]
- Apply transparency to P images in ImageTk.PhotoImage [#6559](https://redirect.github.com/python-pillow/Pillow/issues/6559)
\[radarhere]
- Use rounding in ImageOps contain() and pad() [#6522](https://redirect.github.com/python-pillow/Pillow/issues/6522)
\[bibinhashley, radarhere]
- Fixed GIF remapping to palette with duplicate entries [#6548](https://redirect.github.com/python-pillow/Pillow/issues/6548)
\[radarhere]
- Allow remap_palette() to return an image with less than 256 palette entries [#6543](https://redirect.github.com/python-pillow/Pillow/issues/6543)
\[radarhere]
- Corrected BMP and TGA palette size when saving [#6500](https://redirect.github.com/python-pillow/Pillow/issues/6500)
\[radarhere]
- Do not call load() before draft() in Image.thumbnail [#6539](https://redirect.github.com/python-pillow/Pillow/issues/6539)
\[radarhere]
- Copy palette when converting from P to PA [#6497](https://redirect.github.com/python-pillow/Pillow/issues/6497)
\[radarhere]
- Allow RGB and RGBA values for PA image putpixel [#6504](https://redirect.github.com/python-pillow/Pillow/issues/6504)
\[radarhere]
- Removed support for tkinter in PyPy before Python 3.6 [#6551](https://redirect.github.com/python-pillow/Pillow/issues/6551)
\[nulano]
- Do not use CCITTFaxDecode filter if libtiff is not available [#6518](https://redirect.github.com/python-pillow/Pillow/issues/6518)
\[radarhere]
- Fallback to not using mmap if buffer is not large enough [#6510](https://redirect.github.com/python-pillow/Pillow/issues/6510)
\[radarhere]
- Fixed writing bytes as ASCII tag [#6493](https://redirect.github.com/python-pillow/Pillow/issues/6493)
\[radarhere]
- Open 1 bit EPS in mode 1 [#6499](https://redirect.github.com/python-pillow/Pillow/issues/6499)
\[radarhere]
- Removed support for tkinter before Python 1.5.2 [#6549](https://redirect.github.com/python-pillow/Pillow/issues/6549)
\[radarhere]
- Allow default ImageDraw font to be set [#6484](https://redirect.github.com/python-pillow/Pillow/issues/6484)
\[radarhere, hugovk]
- Save 1 mode PDF using CCITTFaxDecode filter [#6470](https://redirect.github.com/python-pillow/Pillow/issues/6470)
\[radarhere]
- Added support for RGBA PSD images [#6481](https://redirect.github.com/python-pillow/Pillow/issues/6481)
\[radarhere]
- Parse orientation from XMP tag contents [#6463](https://redirect.github.com/python-pillow/Pillow/issues/6463)
\[bigcat88, radarhere]
- Added support for reading ATI1/ATI2 (BC4/BC5) DDS images [#6457](https://redirect.github.com/python-pillow/Pillow/issues/6457)
\[REDxEYE, radarhere]
- Do not clear GIF tile when checking number of frames [#6455](https://redirect.github.com/python-pillow/Pillow/issues/6455)
\[radarhere]
- Support saving multiple MPO frames [#6444](https://redirect.github.com/python-pillow/Pillow/issues/6444)
\[radarhere]
- Do not double quote Pillow version for setuptools >= 60 [#6450](https://redirect.github.com/python-pillow/Pillow/issues/6450)
\[radarhere]
- Added ABGR BMP mask mode [#6436](https://redirect.github.com/python-pillow/Pillow/issues/6436)
\[radarhere]
- Fixed PSDraw rectangle [#6429](https://redirect.github.com/python-pillow/Pillow/issues/6429)
\[radarhere]
- Raise ValueError if PNG sRGB chunk is truncated [#6431](https://redirect.github.com/python-pillow/Pillow/issues/6431)
\[radarhere]
- Handle missing Python executable in ImageShow on macOS [#6416](https://redirect.github.com/python-pillow/Pillow/issues/6416)
\[bryant1410, radarhere]
### [`v9.2.0`](https://redirect.github.com/python-pillow/Pillow/blob/HEAD/CHANGES.rst#920-2022-07-01)
[Compare Source](https://redirect.github.com/python-pillow/Pillow/compare/9.1.1...9.2.0)
- Deprecate ImageFont.getsize and related functions [#6381](https://redirect.github.com/python-pillow/Pillow/issues/6381)
\[nulano, radarhere]
- Fixed null check for fribidi_version_info in FriBiDi shim [#6376](https://redirect.github.com/python-pillow/Pillow/issues/6376)
\[nulano]
- Added GIF decompression bomb check [#6402](https://redirect.github.com/python-pillow/Pillow/issues/6402)
\[radarhere]
- Handle PCF fonts files with less than 256 characters [#6386](https://redirect.github.com/python-pillow/Pillow/issues/6386)
\[dawidcrivelli, radarhere]
- Improved GIF optimize condition [#6378](https://redirect.github.com/python-pillow/Pillow/issues/6378)
\[raygard, radarhere]
- Reverted to **array_interface** with the release of NumPy 1.23 [#6394](https://redirect.github.com/python-pillow/Pillow/issues/6394)
\[radarhere]
- Pad PCX palette to 768 bytes when saving [#6391](https://redirect.github.com/python-pillow/Pillow/issues/6391)
\[radarhere]
- Fixed bug with rounding pixels to palette colors [#6377](https://redirect.github.com/python-pillow/Pillow/issues/6377)
\[btrekkie, radarhere]
- Use gnome-screenshot on Linux if available [#6361](https://redirect.github.com/python-pillow/Pillow/issues/6361)
\[radarhere, nulano]
- Fixed loading L mode BMP RLE8 images [#6384](https://redirect.github.com/python-pillow/Pillow/issues/6384)
\[radarhere]
- Fixed incorrect operator in ImageCms error [#6370](https://redirect.github.com/python-pillow/Pillow/issues/6370)
\[LostBenjamin, hugovk, radarhere]
- Limit FPX tile size to avoid extending outside image [#6368](https://redirect.github.com/python-pillow/Pillow/issues/6368)
\[radarhere]
- Added support for decoding plain PPM formats [#5242](https://redirect.github.com/python-pillow/Pillow/issues/5242)
\[Piolie, radarhere]
- Added apply_transparency() [#6352](https://redirect.github.com/python-pillow/Pillow/issues/6352)
\[radarhere]
- Fixed behaviour change from endian fix [#6197](https://redirect.github.com/python-pillow/Pillow/issues/6197)
\[radarhere]
- Allow remapping P images with RGBA palettes [#6350](https://redirect.github.com/python-pillow/Pillow/issues/6350)
\[radarhere]
- Fixed drawing translucent 1px high polygons [#6278](https://redirect.github.com/python-pillow/Pillow/issues/6278)
\[radarhere]
- Pad COLORMAP to 768 items when saving TIFF [#6232](https://redirect.github.com/python-pillow/Pillow/issues/6232)
\[radarhere]
- Fix P -> PA conversion [#6337](https://redirect.github.com/python-pillow/Pillow/issues/6337)
\[RedShy, radarhere]
- Once exif data is parsed, do not reload unless it changes [#6335](https://redirect.github.com/python-pillow/Pillow/issues/6335)
\[radarhere]
- Only try to connect discontiguous corners at the end of edges [#6303](https://redirect.github.com/python-pillow/Pillow/issues/6303)
\[radarhere]
- Improve transparency handling when saving GIF images [#6176](https://redirect.github.com/python-pillow/Pillow/issues/6176)
\[radarhere]
- Do not update GIF frame position until local image is found [#6219](https://redirect.github.com/python-pillow/Pillow/issues/6219)
\[radarhere]
- Netscape GIF extension belongs after the global color table [#6211](https://redirect.github.com/python-pillow/Pillow/issues/6211)
\[radarhere]
- Only write GIF comments at the beginning of the file [#6300](https://redirect.github.com/python-pillow/Pillow/issues/6300)
\[raygard, radarhere]
- Separate multiple GIF comment blocks with newlines [#6294](https://redirect.github.com/python-pillow/Pillow/issues/6294)
\[raygard, radarhere]
- Always use GIF89a for comments [#6292](https://redirect.github.com/python-pillow/Pillow/issues/6292)
\[raygard, radarhere]
- Ignore compression value from BMP info dictionary when saving as TIFF [#6231](https://redirect.github.com/python-pillow/Pillow/issues/6231)
\[radarhere]
- If font is file-like object, do not re-read from object to get variant [#6234](https://redirect.github.com/python-pillow/Pillow/issues/6234)
\[radarhere]
- Raise ValueError when trying to access internal fp after close [#6213](https://redirect.github.com/python-pillow/Pillow/issues/6213)
\[radarhere]
- Support more affine expression forms in im.point() [#6254](https://redirect.github.com/python-pillow/Pillow/issues/6254)
\[benrg, radarhere]
- Populate Python palette in fromarray() [#6283](https://redirect.github.com/python-pillow/Pillow/issues/6283)
\[radarhere]
- Raise ValueError if PNG chunks are truncated [#6253](https://redirect.github.com/python-pillow/Pillow/issues/6253)
\[radarhere]
- Use durations from each frame by default when saving GIFs [#6265](https://redirect.github.com/python-pillow/Pillow/issues/6265)
\[radarhere]
- Adjust BITSPERSAMPLE to match SAMPLESPERPIXEL when opening TIFFs [#6270](https://redirect.github.com/python-pillow/Pillow/issues/6270)
\[radarhere]
- Search pkgconf system libs/cflags [#6138](https://redirect.github.com/python-pillow/Pillow/issues/6138)
\[jameshilliard, radarhere]
- Raise ValueError for invalid PPM maxval [#6242](https://redirect.github.com/python-pillow/Pillow/issues/6242)
\[radarhere]
- Corrected screencapture argument in ImageGrab.grab() [#6244](https://redirect.github.com/python-pillow/Pillow/issues/6244)
\[axt-one]
- Deprecate support for Qt 5 (PyQt5 and PySide2) [#6237](https://redirect.github.com/python-pillow/Pillow/issues/6237)
\[hugovk, radarhere]
- Increase wait time of temporary file deletion on Windows [#6224](https://redirect.github.com/python-pillow/Pillow/issues/6224)
\[AlexTedeschi]
- Deprecate FreeTypeFont.getmask2 fill parameter [#6220](https://redirect.github.com/python-pillow/Pillow/issues/6220)
\[nulano, radarhere, hugovk]
- Round lut values where necessary [#6188](https://redirect.github.com/python-pillow/Pillow/issues/6188)
\[radarhere]
- Load before getting size in resize() [#6190](https://redirect.github.com/python-pillow/Pillow/issues/6190)
\[radarhere]
- Load image before performing size calculations in thumbnail() [#6186](https://redirect.github.com/python-pillow/Pillow/issues/6186)
\[radarhere]
- Deprecated PhotoImage.paste() box parameter [#6178](https://redirect.github.com/python-pillow/Pillow/issues/6178)
\[radarhere]
### [`v9.1.1`](https://redirect.github.com/python-pillow/Pillow/blob/HEAD/CHANGES.rst#911-2022-05-17)
[Compare Source](https://redirect.github.com/python-pillow/Pillow/compare/9.1.0...9.1.1)
- When reading past the end of a TGA scan line, reduce bytes left. CVE-2022-30595
\[radarhere]
- Do not open images with zero or negative height [#6269](https://redirect.github.com/python-pillow/Pillow/issues/6269)
\[radarhere]
### [`v9.1.0`](https://redirect.github.com/python-pillow/Pillow/blob/HEAD/CHANGES.rst#910-2022-04-01)
[Compare Source](https://redirect.github.com/python-pillow/Pillow/compare/9.0.1...9.1.0)
- Add support for multiple component transformation to JPEG2000 [#5500](https://redirect.github.com/python-pillow/Pillow/issues/5500)
\[scaramallion, radarhere, hugovk]
- Fix loading FriBiDi on Alpine [#6165](https://redirect.github.com/python-pillow/Pillow/issues/6165)
\[nulano]
- Added setting for converting GIF P frames to RGB [#6150](https://redirect.github.com/python-pillow/Pillow/issues/6150)
\[radarhere]
- Allow 1 mode images to be inverted [#6034](https://redirect.github.com/python-pillow/Pillow/issues/6034)
\[radarhere]
- Raise ValueError when trying to save empty JPEG [#6159](https://redirect.github.com/python-pillow/Pillow/issues/6159)
\[radarhere]
- Always save TIFF with contiguous planar configuration [#5973](https://redirect.github.com/python-pillow/Pillow/issues/5973)
\[radarhere]
- Connected discontiguous polygon corners [#5980](https://redirect.github.com/python-pillow/Pillow/issues/5980)
\[radarhere]
- Ensure Tkinter hook is activated for getimage() [#6032](https://redirect.github.com/python-pillow/Pillow/issues/6032)
\[radarhere]
- Use screencapture arguments to crop on macOS [#6152](https://redirect.github.com/python-pillow/Pillow/issues/6152)
\[radarhere]
- Do not mark L mode JPEG as 1 bit in PDF [#6151](https://redirect.github.com/python-pillow/Pillow/issues/6151)
\[radarhere]
- Added support for reading I;16R TIFF images [#6132](https://redirect.github.com/python-pillow/Pillow/issues/6132)
\[radarhere]
- If an error occurs after creating a file, remove the file [#6134](https://redirect.github.com/python-pillow/Pillow/issues/6134)
\[radarhere]
- Fixed calling DisplayViewer or XVViewer without a title [#6136](https://redirect.github.com/python-pillow/Pillow/issues/6136)
\[radarhere]
- Retain RGBA transparency when saving multiple GIF frames [#6128](https://redirect.github.com/python-pillow/Pillow/issues/6128)
\[radarhere]
- Save additional ICO frames with other bit depths if supplied [#6122](https://redirect.github.com/python-pillow/Pillow/issues/6122)
\[radarhere]
- Handle EXIF data truncated to just the header [#6124](https://redirect.github.com/python-pillow/Pillow/issues/6124)
\[radarhere]
- Added support for reading BMP images with RLE8 compression [#6102](https://redirect.github.com/python-pillow/Pillow/issues/6102)
\[radarhere]
- Support Python distributions where \_tkinter is compiled in [#6006](https://redirect.github.com/python-pillow/Pillow/issues/6006)
\[lukegb]
- Added support for PPM arbitrary maxval [#6119](https://redirect.github.com/python-pillow/Pillow/issues/6119)
\[radarhere]
- Added BigTIFF reading [#6097](https://redirect.github.com/python-pillow/Pillow/issues/6097)
\[radarhere]
- When converting, clip I;16 to be unsigned, not signed [#6112](https://redirect.github.com/python-pillow/Pillow/issues/6112)
\[radarhere]
- Fixed loading L mode GIF with transparency [#6086](https://redirect.github.com/python-pillow/Pillow/issues/6086)
\[radarhere]
- Improved handling of PPM header [#5121](https://redirect.github.com/python-pillow/Pillow/issues/5121)
\[Piolie, radarhere]
- Reset size when seeking away from "Large Thumbnail" MPO frame [#6101](https://redirect.github.com/python-pillow/Pillow/issues/6101)
\[radarhere]
- Replace requirements.txt with extras [#6072](https://redirect.github.com/python-pillow/Pillow/issues/6072)
\[hugovk, radarhere]
- Added PyEncoder and support BLP saving [#6069](https://redirect.github.com/python-pillow/Pillow/issues/6069)
\[radarhere]
- Handle TGA images with packets that cross scan lines [#6087](https://redirect.github.com/python-pillow/Pillow/issues/6087)
\[radarhere]
- Added FITS reading [#6056](https://redirect.github.com/python-pillow/Pillow/issues/6056)
\[radarhere, hugovk]
- Added rawmode argument to Image.getpalette() [#6061](https://redirect.github.com/python-pillow/Pillow/issues/6061)
\[radarhere]
- Fixed BUFR, GRIB and HDF5 stub saving [#6071](https://redirect.github.com/python-pillow/Pillow/issues/6071)
\[radarhere]
- Do not automatically remove temporary ImageShow files on Unix [#6045](https://redirect.github.com/python-pillow/Pillow/issues/6045)
\[radarhere]
- Correctly read JPEG compressed BLP images [#4685](https://redirect.github.com/python-pillow/Pillow/issues/4685)
\[Meithal, radarhere]
- Merged \_MODE_CONV typ into ImageMode as typestr [#6057](https://redirect.github.com/python-pillow/Pillow/issues/6057)
\[radarhere]
- Consider palette size when converting and in getpalette() [#6060](https://redirect.github.com/python-pillow/Pillow/issues/6060)
\[radarhere]
- Added enums [#5954](https://redirect.github.com/python-pillow/Pillow/issues/5954)
\[radarhere]
Configuration
📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, check this box
This PR contains the following updates:
==9.0.1
->==10.3.0
GitHub Vulnerability Alerts
CVE-2022-45198
Pillow before 9.2.0 performs Improper Handling of Highly Compressed GIF Data (Data Amplification).
CVE-2023-4863
Heap buffer overflow in libwebp allow a remote attacker to perform an out of bounds memory write via a crafted HTML page.
GHSA-56pw-mpj4-fxww
Pillow versions before v10.0.1 bundled libwebp binaries in wheels that are vulnerable to CVE-2023-5129 (previously CVE-2023-4863). Pillow v10.0.1 upgrades the bundled libwebp binary to v1.3.2.
CVE-2023-44271
An issue was discovered in Pillow before 10.0.0. It is a Denial of Service that uncontrollably allocates memory to process a given task, potentially causing a service to crash by having it run out of memory. This occurs for truetype in ImageFont when textlength in an ImageDraw instance operates on a long text argument.
CVE-2023-50447
Pillow through 10.1.0 allows PIL.ImageMath.eval Arbitrary Code Execution via the environment parameter, a different vulnerability than CVE-2022-22817 (which was about the expression parameter).
CVE-2024-28219
In _imagingcms.c in Pillow before 10.3.0, a buffer overflow exists because strcpy is used instead of strncpy.
Release Notes
python-pillow/Pillow (Pillow)
### [`v10.3.0`](https://redirect.github.com/python-pillow/Pillow/blob/HEAD/CHANGES.rst#1030-2024-04-01) [Compare Source](https://redirect.github.com/python-pillow/Pillow/compare/10.2.0...10.3.0) - CVE-2024-28219: Use `strncpy` to avoid buffer overflow [#7928](https://redirect.github.com/python-pillow/Pillow/issues/7928) \[radarhere, hugovk] - Deprecate `eval()`, replacing it with `lambda_eval()` and `unsafe_eval()` [#7927](https://redirect.github.com/python-pillow/Pillow/issues/7927) \[radarhere, hugovk] - Raise `ValueError` if seeking to greater than offset-sized integer in TIFF [#7883](https://redirect.github.com/python-pillow/Pillow/issues/7883) \[radarhere] - Add `--report` argument to `__main__.py` to omit supported formats [#7818](https://redirect.github.com/python-pillow/Pillow/issues/7818) \[nulano, radarhere, hugovk] - Added RGB to I;16, I;16L, I;16B and I;16N conversion [#7918](https://redirect.github.com/python-pillow/Pillow/issues/7918), [#7920](https://redirect.github.com/python-pillow/Pillow/issues/7920) \[radarhere] - Fix editable installation with custom build backend and configuration options [#7658](https://redirect.github.com/python-pillow/Pillow/issues/7658) \[nulano, radarhere] - Fix putdata() for I;16N on big-endian [#7209](https://redirect.github.com/python-pillow/Pillow/issues/7209) \[Yay295, hugovk, radarhere] - Determine MPO size from markers, not EXIF data [#7884](https://redirect.github.com/python-pillow/Pillow/issues/7884) \[radarhere] - Improved conversion from RGB to RGBa, LA and La [#7888](https://redirect.github.com/python-pillow/Pillow/issues/7888) \[radarhere] - Support FITS images with GZIP\_1 compression [#7894](https://redirect.github.com/python-pillow/Pillow/issues/7894) \[radarhere] - Use I;16 mode for 9-bit JPEG 2000 images [#7900](https://redirect.github.com/python-pillow/Pillow/issues/7900) \[scaramallion, radarhere] - Raise ValueError if kmeans is negative [#7891](https://redirect.github.com/python-pillow/Pillow/issues/7891) \[radarhere] - Remove TIFF tag OSUBFILETYPE when saving using libtiff [#7893](https://redirect.github.com/python-pillow/Pillow/issues/7893) \[radarhere] - Raise ValueError for negative values when loading P1-P3 PPM images [#7882](https://redirect.github.com/python-pillow/Pillow/issues/7882) \[radarhere] - Added reading of JPEG2000 palettes [#7870](https://redirect.github.com/python-pillow/Pillow/issues/7870) \[radarhere] - Added alpha_quality argument when saving WebP images [#7872](https://redirect.github.com/python-pillow/Pillow/issues/7872) \[radarhere] - Fixed joined corners for ImageDraw rounded_rectangle() non-integer dimensions [#7881](https://redirect.github.com/python-pillow/Pillow/issues/7881) \[radarhere] - Stop reading EPS image at EOF marker [#7753](https://redirect.github.com/python-pillow/Pillow/issues/7753) \[radarhere] - PSD layer co-ordinates may be negative [#7706](https://redirect.github.com/python-pillow/Pillow/issues/7706) \[radarhere] - Use subprocess with CREATE_NO_WINDOW flag in ImageShow WindowsViewer [#7791](https://redirect.github.com/python-pillow/Pillow/issues/7791) \[radarhere] - When saving GIF frame that restores to background color, do not fill identical pixels [#7788](https://redirect.github.com/python-pillow/Pillow/issues/7788) \[radarhere] - Fixed reading PNG iCCP compression method [#7823](https://redirect.github.com/python-pillow/Pillow/issues/7823) \[radarhere] - Allow writing IFDRational to UNDEFINED tag [#7840](https://redirect.github.com/python-pillow/Pillow/issues/7840) \[radarhere] - Fix logged tag name when loading Exif data [#7842](https://redirect.github.com/python-pillow/Pillow/issues/7842) \[radarhere] - Use maximum frame size in IHDR chunk when saving APNG images [#7821](https://redirect.github.com/python-pillow/Pillow/issues/7821) \[radarhere] - Prevent opening P TGA images without a palette [#7797](https://redirect.github.com/python-pillow/Pillow/issues/7797) \[radarhere] - Use palette when loading ICO images [#7798](https://redirect.github.com/python-pillow/Pillow/issues/7798) \[radarhere] - Use consistent arguments for load_read and load_seek [#7713](https://redirect.github.com/python-pillow/Pillow/issues/7713) \[radarhere] - Turn off nullability warnings for macOS SDK [#7827](https://redirect.github.com/python-pillow/Pillow/issues/7827) \[radarhere] - Fix shift-sign issue in Convert.c [#7838](https://redirect.github.com/python-pillow/Pillow/issues/7838) \[r-barnes, radarhere] - Open 16-bit grayscale PNGs as I;16 [#7849](https://redirect.github.com/python-pillow/Pillow/issues/7849) \[radarhere] - Handle truncated chunks at the end of PNG images [#7709](https://redirect.github.com/python-pillow/Pillow/issues/7709) \[lajiyuan, radarhere] - Match mask size to pasted image size in GifImagePlugin [#7779](https://redirect.github.com/python-pillow/Pillow/issues/7779) \[radarhere] - Release GIL while calling `WebPAnimDecoderGetNext` [#7782](https://redirect.github.com/python-pillow/Pillow/issues/7782) \[evanmiller, radarhere] - Fixed reading FLI/FLC images with a prefix chunk [#7804](https://redirect.github.com/python-pillow/Pillow/issues/7804) \[twolife] - Update wl-paste handling and return None for some errors in grabclipboard() on Linux [#7745](https://redirect.github.com/python-pillow/Pillow/issues/7745) \[nik012003, radarhere] - Remove execute bit from `setup.py` [#7760](https://redirect.github.com/python-pillow/Pillow/issues/7760) \[hugovk] - Do not support using test-image-results to upload images after test failures [#7739](https://redirect.github.com/python-pillow/Pillow/issues/7739) \[radarhere] - Changed ImageMath.ops to be static [#7721](https://redirect.github.com/python-pillow/Pillow/issues/7721) \[radarhere] - Fix APNG info after seeking backwards more than twice [#7701](https://redirect.github.com/python-pillow/Pillow/issues/7701) \[esoma, radarhere] - Deprecate ImageCms constants and versions() function [#7702](https://redirect.github.com/python-pillow/Pillow/issues/7702) \[nulano, radarhere] - Added PerspectiveTransform [#7699](https://redirect.github.com/python-pillow/Pillow/issues/7699) \[radarhere] - Add support for reading and writing grayscale PFM images [#7696](https://redirect.github.com/python-pillow/Pillow/issues/7696) \[nulano, hugovk] - Add LCMS2 flags to ImageCms [#7676](https://redirect.github.com/python-pillow/Pillow/issues/7676) \[nulano, radarhere, hugovk] - Rename x64 to AMD64 in winbuild [#7693](https://redirect.github.com/python-pillow/Pillow/issues/7693) \[nulano] ### [`v10.2.0`](https://redirect.github.com/python-pillow/Pillow/blob/HEAD/CHANGES.rst#1020-2024-01-02) [Compare Source](https://redirect.github.com/python-pillow/Pillow/compare/10.1.0...10.2.0) - Add `keep_rgb` option when saving JPEG to prevent conversion of RGB colorspace [#7553](https://redirect.github.com/python-pillow/Pillow/issues/7553) \[bgilbert, radarhere] - Trim glyph size in ImageFont.getmask() [#7669](https://redirect.github.com/python-pillow/Pillow/issues/7669), [#7672](https://redirect.github.com/python-pillow/Pillow/issues/7672) \[radarhere, nulano] - Deprecate IptcImagePlugin helpers [#7664](https://redirect.github.com/python-pillow/Pillow/issues/7664) \[nulano, hugovk, radarhere] - Allow uncompressed TIFF images to be saved in chunks [#7650](https://redirect.github.com/python-pillow/Pillow/issues/7650) \[radarhere] - Concatenate multiple JPEG EXIF markers [#7496](https://redirect.github.com/python-pillow/Pillow/issues/7496) \[radarhere] - Changed IPTC tile tuple to match other plugins [#7661](https://redirect.github.com/python-pillow/Pillow/issues/7661) \[radarhere] - Do not assign new fp attribute when exiting context manager [#7566](https://redirect.github.com/python-pillow/Pillow/issues/7566) \[radarhere] - Support arbitrary masks for uncompressed RGB DDS images [#7589](https://redirect.github.com/python-pillow/Pillow/issues/7589) \[radarhere, akx] - Support setting ROWSPERSTRIP tag [#7654](https://redirect.github.com/python-pillow/Pillow/issues/7654) \[radarhere] - Apply ImageFont.MAX_STRING_LENGTH to ImageFont.getmask() [#7662](https://redirect.github.com/python-pillow/Pillow/issues/7662) \[radarhere] - Optimise `ImageColor` using `functools.lru_cache` [#7657](https://redirect.github.com/python-pillow/Pillow/issues/7657) \[hugovk] - Restricted environment keys for ImageMath.eval() [#7655](https://redirect.github.com/python-pillow/Pillow/issues/7655) \[wiredfool, radarhere] - Optimise `ImageMode.getmode` using `functools.lru_cache` [#7641](https://redirect.github.com/python-pillow/Pillow/issues/7641) \[hugovk, radarhere] - Fix incorrect color blending for overlapping glyphs [#7497](https://redirect.github.com/python-pillow/Pillow/issues/7497) \[ZachNagengast, nulano, radarhere] - Attempt memory mapping when tile args is a string [#7565](https://redirect.github.com/python-pillow/Pillow/issues/7565) \[radarhere] - Fill identical pixels with transparency in subsequent frames when saving GIF [#7568](https://redirect.github.com/python-pillow/Pillow/issues/7568) \[radarhere] - Corrected duration when combining multiple GIF frames into single frame [#7521](https://redirect.github.com/python-pillow/Pillow/issues/7521) \[radarhere] - Handle disposing GIF background from outside palette [#7515](https://redirect.github.com/python-pillow/Pillow/issues/7515) \[radarhere] - Seek past the data when skipping a PSD layer [#7483](https://redirect.github.com/python-pillow/Pillow/issues/7483) \[radarhere] - Import plugins relative to the module [#7576](https://redirect.github.com/python-pillow/Pillow/issues/7576) \[deliangyang, jaxx0n] - Translate encoder error codes to strings; deprecate `ImageFile.raise_oserror()` [#7609](https://redirect.github.com/python-pillow/Pillow/issues/7609) \[bgilbert, radarhere] - Support reading BC4U and DX10 BC1 images [#6486](https://redirect.github.com/python-pillow/Pillow/issues/6486) \[REDxEYE, radarhere, hugovk] - Optimize ImageStat.Stat.extrema [#7593](https://redirect.github.com/python-pillow/Pillow/issues/7593) \[florath, radarhere] - Handle pathlib.Path in FreeTypeFont [#7578](https://redirect.github.com/python-pillow/Pillow/issues/7578) \[radarhere, hugovk, nulano] - Added support for reading DX10 BC4 DDS images [#7603](https://redirect.github.com/python-pillow/Pillow/issues/7603) \[sambvfx, radarhere] - Optimized ImageStat.Stat.count [#7599](https://redirect.github.com/python-pillow/Pillow/issues/7599) \[florath] - Correct PDF palette size when saving [#7555](https://redirect.github.com/python-pillow/Pillow/issues/7555) \[radarhere] - Fixed closing file pointer with olefile 0.47 [#7594](https://redirect.github.com/python-pillow/Pillow/issues/7594) \[radarhere] - Raise ValueError when TrueType font size is not greater than zero [#7584](https://redirect.github.com/python-pillow/Pillow/issues/7584), [#7587](https://redirect.github.com/python-pillow/Pillow/issues/7587) \[akx, radarhere] - If absent, do not try to close fp when closing image [#7557](https://redirect.github.com/python-pillow/Pillow/issues/7557) \[RaphaelVRossi, radarhere] - Allow configuring JPEG restart marker interval on save [#7488](https://redirect.github.com/python-pillow/Pillow/issues/7488) \[bgilbert, radarhere] - Decrement reference count for PyObject [#7549](https://redirect.github.com/python-pillow/Pillow/issues/7549) \[radarhere] - Implement `streamtype=1` option for tables-only JPEG encoding [#7491](https://redirect.github.com/python-pillow/Pillow/issues/7491) \[bgilbert, radarhere] - If save_all PNG only has one frame, do not create animated image [#7522](https://redirect.github.com/python-pillow/Pillow/issues/7522) \[radarhere] - Fixed frombytes() for images with a zero dimension [#7493](https://redirect.github.com/python-pillow/Pillow/issues/7493) \[radarhere] ### [`v10.1.0`](https://redirect.github.com/python-pillow/Pillow/blob/HEAD/CHANGES.rst#1010-2023-10-15) [Compare Source](https://redirect.github.com/python-pillow/Pillow/compare/10.0.1...10.1.0) - Added TrueType default font to allow for different sizes [#7354](https://redirect.github.com/python-pillow/Pillow/issues/7354) \[radarhere] - Fixed invalid argument warning [#7442](https://redirect.github.com/python-pillow/Pillow/issues/7442) \[radarhere] - Added ImageOps cover method [#7412](https://redirect.github.com/python-pillow/Pillow/issues/7412) \[radarhere, hugovk] - Catch struct.error from truncated EXIF when reading JPEG DPI [#7458](https://redirect.github.com/python-pillow/Pillow/issues/7458) \[radarhere] - Consider default image when selecting mode for PNG save_all [#7437](https://redirect.github.com/python-pillow/Pillow/issues/7437) \[radarhere] - Support BGR;15, BGR;16 and BGR;24 access, unpacking and putdata [#7303](https://redirect.github.com/python-pillow/Pillow/issues/7303) \[radarhere] - Added CMYK to RGB unpacker [#7310](https://redirect.github.com/python-pillow/Pillow/issues/7310) \[radarhere] - Improved flexibility of XMP parsing [#7274](https://redirect.github.com/python-pillow/Pillow/issues/7274) \[radarhere] - Support reading 8-bit YCbCr TIFF images [#7415](https://redirect.github.com/python-pillow/Pillow/issues/7415) \[radarhere] - Allow saving I;16B images as PNG [#7302](https://redirect.github.com/python-pillow/Pillow/issues/7302) \[radarhere] - Corrected drawing I;16 points and writing I;16 text [#7257](https://redirect.github.com/python-pillow/Pillow/issues/7257) \[radarhere] - Set blue channel to 128 for BC5S [#7413](https://redirect.github.com/python-pillow/Pillow/issues/7413) \[radarhere] - Increase flexibility when reading IPTC fields [#7319](https://redirect.github.com/python-pillow/Pillow/issues/7319) \[radarhere] - Set C palette to be empty by default [#7289](https://redirect.github.com/python-pillow/Pillow/issues/7289) \[radarhere] - Added gs_binary to control Ghostscript use on all platforms [#7392](https://redirect.github.com/python-pillow/Pillow/issues/7392) \[radarhere] - Read bounding box information from the trailer of EPS files if specified [#7382](https://redirect.github.com/python-pillow/Pillow/issues/7382) \[nopperl, radarhere] - Added reading 8-bit color DDS images [#7426](https://redirect.github.com/python-pillow/Pillow/issues/7426) \[radarhere] - Added has_transparency_data [#7420](https://redirect.github.com/python-pillow/Pillow/issues/7420) \[radarhere, hugovk] - Fixed bug when reading BC5S DDS images [#7401](https://redirect.github.com/python-pillow/Pillow/issues/7401) \[radarhere] - Prevent TIFF orientation from being applied more than once [#7383](https://redirect.github.com/python-pillow/Pillow/issues/7383) \[radarhere] - Use previous pixel alpha for QOI_OP_RGB [#7357](https://redirect.github.com/python-pillow/Pillow/issues/7357) \[radarhere] - Added BC5U reading [#7358](https://redirect.github.com/python-pillow/Pillow/issues/7358) \[radarhere] - Allow getpixel() to accept a list [#7355](https://redirect.github.com/python-pillow/Pillow/issues/7355) \[radarhere, homm] - Allow GaussianBlur and BoxBlur to accept a sequence of x and y radii [#7336](https://redirect.github.com/python-pillow/Pillow/issues/7336) \[radarhere] - Expand JPEG buffer size when saving optimized or progressive [#7345](https://redirect.github.com/python-pillow/Pillow/issues/7345) \[radarhere] - Added session type check for Linux in ImageGrab.grabclipboard() [#7332](https://redirect.github.com/python-pillow/Pillow/issues/7332) \[TheNooB2706, radarhere, hugovk] - Allow "loop=None" when saving GIF images [#7329](https://redirect.github.com/python-pillow/Pillow/issues/7329) \[radarhere] - Fixed transparency when saving P mode images to PDF [#7323](https://redirect.github.com/python-pillow/Pillow/issues/7323) \[radarhere] - Added saving LA images as PDFs [#7299](https://redirect.github.com/python-pillow/Pillow/issues/7299) \[radarhere] - Set SMaskInData to 1 for PDFs with alpha [#7316](https://redirect.github.com/python-pillow/Pillow/issues/7316), [#7317](https://redirect.github.com/python-pillow/Pillow/issues/7317) \[radarhere] - Changed Image mode property to be read-only by default [#7307](https://redirect.github.com/python-pillow/Pillow/issues/7307) \[radarhere] - Silence exceptions in *repr_jpeg* and *repr_png* [#7266](https://redirect.github.com/python-pillow/Pillow/issues/7266) \[mtreinish, radarhere] - Do not use transparency when saving GIF if it has been removed when normalizing mode [#7284](https://redirect.github.com/python-pillow/Pillow/issues/7284) \[radarhere] - Fix missing symbols when libtiff depends on libjpeg [#7270](https://redirect.github.com/python-pillow/Pillow/issues/7270) \[heitbaum] ### [`v10.0.1`](https://redirect.github.com/python-pillow/Pillow/blob/HEAD/CHANGES.rst#1001-2023-09-15) [Compare Source](https://redirect.github.com/python-pillow/Pillow/compare/10.0.0...10.0.1) - Updated libwebp to 1.3.2 [#7395](https://redirect.github.com/python-pillow/Pillow/issues/7395) \[radarhere] - Updated zlib to 1.3 [#7344](https://redirect.github.com/python-pillow/Pillow/issues/7344) \[radarhere] ### [`v10.0.0`](https://redirect.github.com/python-pillow/Pillow/blob/HEAD/CHANGES.rst#1000-2023-07-01) [Compare Source](https://redirect.github.com/python-pillow/Pillow/compare/9.5.0...10.0.0) - Fixed deallocating mask images [#7246](https://redirect.github.com/python-pillow/Pillow/issues/7246) \[radarhere] - Added ImageFont.MAX_STRING_LENGTH [#7244](https://redirect.github.com/python-pillow/Pillow/issues/7244) \[radarhere, hugovk] - Fix Windows build with pyproject.toml [#7230](https://redirect.github.com/python-pillow/Pillow/issues/7230) \[hugovk, nulano, radarhere] - Do not close provided file handles with libtiff [#7199](https://redirect.github.com/python-pillow/Pillow/issues/7199) \[radarhere] - Convert to HSV if mode is HSV in getcolor() [#7226](https://redirect.github.com/python-pillow/Pillow/issues/7226) \[radarhere] - Added alpha_only argument to getbbox() [#7123](https://redirect.github.com/python-pillow/Pillow/issues/7123) \[radarhere. hugovk] - Prioritise speed in *repr_png* [#7242](https://redirect.github.com/python-pillow/Pillow/issues/7242) \[radarhere] - Do not use CFFI access by default on PyPy [#7236](https://redirect.github.com/python-pillow/Pillow/issues/7236) \[radarhere] - Limit size even if one dimension is zero in decompression bomb check [#7235](https://redirect.github.com/python-pillow/Pillow/issues/7235) \[radarhere] - Use --config-settings instead of deprecated --global-option [#7171](https://redirect.github.com/python-pillow/Pillow/issues/7171) \[radarhere] - Better C integer definitions [#6645](https://redirect.github.com/python-pillow/Pillow/issues/6645) \[Yay295, hugovk] - Fixed finding dependencies on Cygwin [#7175](https://redirect.github.com/python-pillow/Pillow/issues/7175) \[radarhere] - Changed grabclipboard() to use PNG instead of JPG compression on macOS [#7219](https://redirect.github.com/python-pillow/Pillow/issues/7219) \[abey79, radarhere] - Added in_place argument to ImageOps.exif_transpose() [#7092](https://redirect.github.com/python-pillow/Pillow/issues/7092) \[radarhere] - Fixed calling putpalette() on L and LA images before load() [#7187](https://redirect.github.com/python-pillow/Pillow/issues/7187) \[radarhere] - Fixed saving TIFF multiframe images with LONG8 tag types [#7078](https://redirect.github.com/python-pillow/Pillow/issues/7078) \[radarhere] - Fixed combining single duration across duplicate APNG frames [#7146](https://redirect.github.com/python-pillow/Pillow/issues/7146) \[radarhere] - Remove temporary file when error is raised [#7148](https://redirect.github.com/python-pillow/Pillow/issues/7148) \[radarhere] - Do not use temporary file when grabbing clipboard on Linux [#7200](https://redirect.github.com/python-pillow/Pillow/issues/7200) \[radarhere] - If the clipboard fails to open on Windows, wait and try again [#7141](https://redirect.github.com/python-pillow/Pillow/issues/7141) \[radarhere] - Fixed saving multiple 1 mode frames to GIF [#7181](https://redirect.github.com/python-pillow/Pillow/issues/7181) \[radarhere] - Replaced absolute PIL import with relative import [#7173](https://redirect.github.com/python-pillow/Pillow/issues/7173) \[radarhere] - Replaced deprecated Py_FileSystemDefaultEncoding for Python >= 3.12 [#7192](https://redirect.github.com/python-pillow/Pillow/issues/7192) \[radarhere] - Improved wl-paste mimetype handling in ImageGrab [#7094](https://redirect.github.com/python-pillow/Pillow/issues/7094) \[rrcgat, radarhere] - Added *repr_jpeg*() for IPython display_jpeg [#7135](https://redirect.github.com/python-pillow/Pillow/issues/7135) \[n3011, radarhere, nulano] - Use "/sbin/ldconfig" if ldconfig is not found [#7068](https://redirect.github.com/python-pillow/Pillow/issues/7068) \[radarhere] - Prefer screenshots using XCB over gnome-screenshot [#7143](https://redirect.github.com/python-pillow/Pillow/issues/7143) \[nulano, radarhere] - Fixed joined corners for ImageDraw rounded_rectangle() odd dimensions [#7151](https://redirect.github.com/python-pillow/Pillow/issues/7151) \[radarhere] - Support reading signed 8-bit TIFF images [#7111](https://redirect.github.com/python-pillow/Pillow/issues/7111) \[radarhere] - Added width argument to ImageDraw regular_polygon [#7132](https://redirect.github.com/python-pillow/Pillow/issues/7132) \[radarhere] - Support I mode for ImageFilter.BuiltinFilter [#7108](https://redirect.github.com/python-pillow/Pillow/issues/7108) \[radarhere] - Raise error from stderr of Linux ImageGrab.grabclipboard() command [#7112](https://redirect.github.com/python-pillow/Pillow/issues/7112) \[radarhere] - Added unpacker from I;16B to I;16 [#7125](https://redirect.github.com/python-pillow/Pillow/issues/7125) \[radarhere] - Support float font sizes [#7107](https://redirect.github.com/python-pillow/Pillow/issues/7107) \[radarhere] - Use later value for duplicate xref entries in PdfParser [#7102](https://redirect.github.com/python-pillow/Pillow/issues/7102) \[radarhere] - Load before getting size in **getstate** [#7105](https://redirect.github.com/python-pillow/Pillow/issues/7105) \[bigcat88, radarhere] - Fixed type handling for include and lib directories [#7069](https://redirect.github.com/python-pillow/Pillow/issues/7069) \[adisbladis, radarhere] - Remove deprecations for Pillow 10.0.0 [#7059](https://redirect.github.com/python-pillow/Pillow/issues/7059), [#7080](https://redirect.github.com/python-pillow/Pillow/issues/7080) \[hugovk, radarhere] - Drop support for soon-EOL Python 3.7 [#7058](https://redirect.github.com/python-pillow/Pillow/issues/7058) \[hugovk, radarhere] ### [`v9.5.0`](https://redirect.github.com/python-pillow/Pillow/blob/HEAD/CHANGES.rst#950-2023-04-01) [Compare Source](https://redirect.github.com/python-pillow/Pillow/compare/9.4.0...9.5.0) - Added ImageSourceData to TAGS_V2 [#7053](https://redirect.github.com/python-pillow/Pillow/issues/7053) \[radarhere] - Clear PPM half token after use [#7052](https://redirect.github.com/python-pillow/Pillow/issues/7052) \[radarhere] - Removed absolute path to ldconfig [#7044](https://redirect.github.com/python-pillow/Pillow/issues/7044) \[radarhere] - Support custom comments and PLT markers when saving JPEG2000 images [#6903](https://redirect.github.com/python-pillow/Pillow/issues/6903) \[joshware, radarhere, hugovk] - Load before getting size in **array_interface** [#7034](https://redirect.github.com/python-pillow/Pillow/issues/7034) \[radarhere] - Support creating BGR;15, BGR;16 and BGR;24 images, but drop support for BGR;32 [#7010](https://redirect.github.com/python-pillow/Pillow/issues/7010) \[radarhere] - Consider transparency when applying APNG blend mask [#7018](https://redirect.github.com/python-pillow/Pillow/issues/7018) \[radarhere] - Round duration when saving animated WebP images [#6996](https://redirect.github.com/python-pillow/Pillow/issues/6996) \[radarhere] - Added reading of JPEG2000 comments [#6909](https://redirect.github.com/python-pillow/Pillow/issues/6909) \[radarhere] - Decrement reference count [#7003](https://redirect.github.com/python-pillow/Pillow/issues/7003) \[radarhere, nulano] - Allow libtiff_support_custom_tags to be missing [#7020](https://redirect.github.com/python-pillow/Pillow/issues/7020) \[radarhere] - Improved I;16N support [#6834](https://redirect.github.com/python-pillow/Pillow/issues/6834) \[radarhere] - Added QOI reading [#6852](https://redirect.github.com/python-pillow/Pillow/issues/6852) \[radarhere, hugovk] - Added saving RGBA images as PDFs [#6925](https://redirect.github.com/python-pillow/Pillow/issues/6925) \[radarhere] - Do not raise an error if os.environ does not contain PATH [#6935](https://redirect.github.com/python-pillow/Pillow/issues/6935) \[radarhere, hugovk] - Close OleFileIO instance when closing or exiting FPX or MIC [#7005](https://redirect.github.com/python-pillow/Pillow/issues/7005) \[radarhere] - Added **int** to IFDRational for Python >= 3.11 [#6998](https://redirect.github.com/python-pillow/Pillow/issues/6998) \[radarhere] - Added memoryview support to Dib.frombytes() [#6988](https://redirect.github.com/python-pillow/Pillow/issues/6988) \[radarhere, nulano] - Close file pointer copy in the libtiff encoder if still open [#6986](https://redirect.github.com/python-pillow/Pillow/issues/6986) \[fcarron, radarhere] - Raise an error if ImageDraw co-ordinates are incorrectly ordered [#6978](https://redirect.github.com/python-pillow/Pillow/issues/6978) \[radarhere] - Added "corners" argument to ImageDraw rounded_rectangle() [#6954](https://redirect.github.com/python-pillow/Pillow/issues/6954) \[radarhere] - Added memoryview support to frombytes() [#6974](https://redirect.github.com/python-pillow/Pillow/issues/6974) \[radarhere] - Allow comments in FITS images [#6973](https://redirect.github.com/python-pillow/Pillow/issues/6973) \[radarhere] - Support saving PDF with different X and Y resolutions [#6961](https://redirect.github.com/python-pillow/Pillow/issues/6961) \[jvanderneutstulen, radarhere, hugovk] - Fixed writing int as UNDEFINED tag [#6950](https://redirect.github.com/python-pillow/Pillow/issues/6950) \[radarhere] - Raise an error if EXIF data is too long when saving JPEG [#6939](https://redirect.github.com/python-pillow/Pillow/issues/6939) \[radarhere] - Handle more than one directory returned by pkg-config [#6896](https://redirect.github.com/python-pillow/Pillow/issues/6896) \[sebastic, radarhere] - Do not retry past formats when loading all formats for the first time [#6902](https://redirect.github.com/python-pillow/Pillow/issues/6902) \[radarhere] - Do not retry specified formats if they failed when opening [#6893](https://redirect.github.com/python-pillow/Pillow/issues/6893) \[radarhere] - Do not unintentionally load TIFF format at first [#6892](https://redirect.github.com/python-pillow/Pillow/issues/6892) \[radarhere] - Stop reading when EPS line becomes too long [#6897](https://redirect.github.com/python-pillow/Pillow/issues/6897) \[radarhere] - Allow writing IFDRational to BYTE tag [#6890](https://redirect.github.com/python-pillow/Pillow/issues/6890) \[radarhere] - Raise ValueError for BoxBlur filter with negative radius [#6874](https://redirect.github.com/python-pillow/Pillow/issues/6874) \[hugovk, radarhere] - Support arbitrary number of loaded modules on Windows [#6761](https://redirect.github.com/python-pillow/Pillow/issues/6761) \[javidcf, radarhere, nulano] ### [`v9.4.0`](https://redirect.github.com/python-pillow/Pillow/blob/HEAD/CHANGES.rst#940-2023-01-02) [Compare Source](https://redirect.github.com/python-pillow/Pillow/compare/9.3.0...9.4.0) - Fixed null pointer dereference crash with malformed font [#6846](https://redirect.github.com/python-pillow/Pillow/issues/6846) \[wiredfool, radarhere] - Return from ImagingFill early if image has a zero dimension [#6842](https://redirect.github.com/python-pillow/Pillow/issues/6842) \[radarhere] - Reversed deprecations for Image constants, except for duplicate Resampling attributes [#6830](https://redirect.github.com/python-pillow/Pillow/issues/6830) \[radarhere] - Improve exception traceback readability [#6836](https://redirect.github.com/python-pillow/Pillow/issues/6836) \[hugovk, radarhere] - Do not attempt to read IFD1 if absent [#6840](https://redirect.github.com/python-pillow/Pillow/issues/6840) \[radarhere] - Fixed writing int as ASCII tag [#6800](https://redirect.github.com/python-pillow/Pillow/issues/6800) \[radarhere] - If available, use wl-paste or xclip for grabclipboard() on Linux [#6783](https://redirect.github.com/python-pillow/Pillow/issues/6783) \[radarhere] - Added signed option when saving JPEG2000 images [#6709](https://redirect.github.com/python-pillow/Pillow/issues/6709) \[radarhere] - Patch OpenJPEG to include ARM64 fix [#6718](https://redirect.github.com/python-pillow/Pillow/issues/6718) \[radarhere] - Added support for I;16 modes in putdata() [#6825](https://redirect.github.com/python-pillow/Pillow/issues/6825) \[radarhere] - Added conversion from RGBa to RGB [#6708](https://redirect.github.com/python-pillow/Pillow/issues/6708) \[radarhere] - Added DDS support for uncompressed L and LA images [#6820](https://redirect.github.com/python-pillow/Pillow/issues/6820) \[radarhere, REDxEYE] - Added LightSource tag values to ExifTags [#6749](https://redirect.github.com/python-pillow/Pillow/issues/6749) \[radarhere] - Fixed PyAccess after changing ICO size [#6821](https://redirect.github.com/python-pillow/Pillow/issues/6821) \[radarhere] - Do not use EXIF from info when saving PNG images [#6819](https://redirect.github.com/python-pillow/Pillow/issues/6819) \[radarhere] - Fixed saving EXIF data to MPO [#6817](https://redirect.github.com/python-pillow/Pillow/issues/6817) \[radarhere] - Added Exif hide_offsets() [#6762](https://redirect.github.com/python-pillow/Pillow/issues/6762) \[radarhere] - Only compare to previous frame when checking for duplicate GIF frames while saving [#6787](https://redirect.github.com/python-pillow/Pillow/issues/6787) \[radarhere] - Always initialize all plugins in registered_extensions() [#6811](https://redirect.github.com/python-pillow/Pillow/issues/6811) \[radarhere] - Ignore non-opaque WebP background when saving as GIF [#6792](https://redirect.github.com/python-pillow/Pillow/issues/6792) \[radarhere] - Only set tile in ImageFile **setstate** [#6793](https://redirect.github.com/python-pillow/Pillow/issues/6793) \[radarhere] - When reading BLP, do not trust JPEG decoder to determine image is CMYK [#6767](https://redirect.github.com/python-pillow/Pillow/issues/6767) \[radarhere] - Added IFD enum to ExifTags [#6748](https://redirect.github.com/python-pillow/Pillow/issues/6748) \[radarhere] - Fixed bug combining GIF frame durations [#6779](https://redirect.github.com/python-pillow/Pillow/issues/6779) \[radarhere] - Support saving JPEG comments [#6774](https://redirect.github.com/python-pillow/Pillow/issues/6774) \[smason, radarhere] - Added getxmp() to WebPImagePlugin [#6758](https://redirect.github.com/python-pillow/Pillow/issues/6758) \[radarhere] - Added "exact" option when saving WebP [#6747](https://redirect.github.com/python-pillow/Pillow/issues/6747) \[ashafaei, radarhere] - Use fractional coordinates when drawing text [#6722](https://redirect.github.com/python-pillow/Pillow/issues/6722) \[radarhere] - Fixed writing int as BYTE tag [#6740](https://redirect.github.com/python-pillow/Pillow/issues/6740) \[radarhere] - Added MP Format Version when saving MPO [#6735](https://redirect.github.com/python-pillow/Pillow/issues/6735) \[radarhere] - Added Interop to ExifTags [#6724](https://redirect.github.com/python-pillow/Pillow/issues/6724) \[radarhere] - CVE-2007-4559 patch when building on Windows [#6704](https://redirect.github.com/python-pillow/Pillow/issues/6704) \[TrellixVulnTeam, nulano, radarhere] - Fix compiler warning: accessing 64 bytes in a region of size 48 [#6714](https://redirect.github.com/python-pillow/Pillow/issues/6714) \[wiredfool] - Use verbose flag for pip install [#6713](https://redirect.github.com/python-pillow/Pillow/issues/6713) \[wiredfool, radarhere] ### [`v9.3.0`](https://redirect.github.com/python-pillow/Pillow/blob/HEAD/CHANGES.rst#930-2022-10-29) [Compare Source](https://redirect.github.com/python-pillow/Pillow/compare/9.2.0...9.3.0) - Limit SAMPLESPERPIXEL to avoid runtime DOS [#6700](https://redirect.github.com/python-pillow/Pillow/issues/6700) \[wiredfool] - Initialize libtiff buffer when saving [#6699](https://redirect.github.com/python-pillow/Pillow/issues/6699) \[radarhere] - Inline fname2char to fix memory leak [#6329](https://redirect.github.com/python-pillow/Pillow/issues/6329) \[nulano] - Fix memory leaks related to text features [#6330](https://redirect.github.com/python-pillow/Pillow/issues/6330) \[nulano] - Use double quotes for version check on old CPython on Windows [#6695](https://redirect.github.com/python-pillow/Pillow/issues/6695) \[hugovk] - Remove backup implementation of Round for Windows platforms [#6693](https://redirect.github.com/python-pillow/Pillow/issues/6693) \[cgohlke] - Fixed set_variation_by_name offset [#6445](https://redirect.github.com/python-pillow/Pillow/issues/6445) \[radarhere] - Fix malloc in \_imagingft.c:font_setvaraxes [#6690](https://redirect.github.com/python-pillow/Pillow/issues/6690) \[cgohlke] - Release Python GIL when converting images using matrix operations [#6418](https://redirect.github.com/python-pillow/Pillow/issues/6418) \[hmaarrfk] - Added ExifTags enums [#6630](https://redirect.github.com/python-pillow/Pillow/issues/6630) \[radarhere] - Do not modify previous frame when calculating delta in PNG [#6683](https://redirect.github.com/python-pillow/Pillow/issues/6683) \[radarhere] - Added support for reading BMP images with RLE4 compression [#6674](https://redirect.github.com/python-pillow/Pillow/issues/6674) \[npjg, radarhere] - Decode JPEG compressed BLP1 data in original mode [#6678](https://redirect.github.com/python-pillow/Pillow/issues/6678) \[radarhere] - Added GPS TIFF tag info [#6661](https://redirect.github.com/python-pillow/Pillow/issues/6661) \[radarhere] - Added conversion between RGB/RGBA/RGBX and LAB [#6647](https://redirect.github.com/python-pillow/Pillow/issues/6647) \[radarhere] - Do not attempt normalization if mode is already normal [#6644](https://redirect.github.com/python-pillow/Pillow/issues/6644) \[radarhere] - Fixed seeking to an L frame in a GIF [#6576](https://redirect.github.com/python-pillow/Pillow/issues/6576) \[radarhere] - Consider all frames when selecting mode for PNG save_all [#6610](https://redirect.github.com/python-pillow/Pillow/issues/6610) \[radarhere] - Don't reassign crc on ChunkStream close [#6627](https://redirect.github.com/python-pillow/Pillow/issues/6627) \[wiredfool, radarhere] - Raise a warning if NumPy failed to raise an error during conversion [#6594](https://redirect.github.com/python-pillow/Pillow/issues/6594) \[radarhere] - Show all frames in ImageShow [#6611](https://redirect.github.com/python-pillow/Pillow/issues/6611) \[radarhere] - Allow FLI palette chunk to not be first [#6626](https://redirect.github.com/python-pillow/Pillow/issues/6626) \[radarhere] - If first GIF frame has transparency for RGB_ALWAYS loading strategy, use RGBA mode [#6592](https://redirect.github.com/python-pillow/Pillow/issues/6592) \[radarhere] - Round box position to integer when pasting embedded color [#6517](https://redirect.github.com/python-pillow/Pillow/issues/6517) \[radarhere, nulano] - Removed EXIF prefix when saving WebP [#6582](https://redirect.github.com/python-pillow/Pillow/issues/6582) \[radarhere] - Pad IM palette to 768 bytes when saving [#6579](https://redirect.github.com/python-pillow/Pillow/issues/6579) \[radarhere] - Added DDS BC6H reading [#6449](https://redirect.github.com/python-pillow/Pillow/issues/6449) \[ShadelessFox, REDxEYE, radarhere] - Added support for opening WhiteIsZero 16-bit integer TIFF images [#6642](https://redirect.github.com/python-pillow/Pillow/issues/6642) \[JayWiz, radarhere] - Raise an error when allocating translucent color to RGB palette [#6654](https://redirect.github.com/python-pillow/Pillow/issues/6654) \[jsbueno, radarhere] - Added reading of TIFF child images [#6569](https://redirect.github.com/python-pillow/Pillow/issues/6569) \[radarhere] - Improved ImageOps palette handling [#6596](https://redirect.github.com/python-pillow/Pillow/issues/6596) \[PososikTeam, radarhere] - Defer parsing of palette into colors [#6567](https://redirect.github.com/python-pillow/Pillow/issues/6567) \[radarhere] - Apply transparency to P images in ImageTk.PhotoImage [#6559](https://redirect.github.com/python-pillow/Pillow/issues/6559) \[radarhere] - Use rounding in ImageOps contain() and pad() [#6522](https://redirect.github.com/python-pillow/Pillow/issues/6522) \[bibinhashley, radarhere] - Fixed GIF remapping to palette with duplicate entries [#6548](https://redirect.github.com/python-pillow/Pillow/issues/6548) \[radarhere] - Allow remap_palette() to return an image with less than 256 palette entries [#6543](https://redirect.github.com/python-pillow/Pillow/issues/6543) \[radarhere] - Corrected BMP and TGA palette size when saving [#6500](https://redirect.github.com/python-pillow/Pillow/issues/6500) \[radarhere] - Do not call load() before draft() in Image.thumbnail [#6539](https://redirect.github.com/python-pillow/Pillow/issues/6539) \[radarhere] - Copy palette when converting from P to PA [#6497](https://redirect.github.com/python-pillow/Pillow/issues/6497) \[radarhere] - Allow RGB and RGBA values for PA image putpixel [#6504](https://redirect.github.com/python-pillow/Pillow/issues/6504) \[radarhere] - Removed support for tkinter in PyPy before Python 3.6 [#6551](https://redirect.github.com/python-pillow/Pillow/issues/6551) \[nulano] - Do not use CCITTFaxDecode filter if libtiff is not available [#6518](https://redirect.github.com/python-pillow/Pillow/issues/6518) \[radarhere] - Fallback to not using mmap if buffer is not large enough [#6510](https://redirect.github.com/python-pillow/Pillow/issues/6510) \[radarhere] - Fixed writing bytes as ASCII tag [#6493](https://redirect.github.com/python-pillow/Pillow/issues/6493) \[radarhere] - Open 1 bit EPS in mode 1 [#6499](https://redirect.github.com/python-pillow/Pillow/issues/6499) \[radarhere] - Removed support for tkinter before Python 1.5.2 [#6549](https://redirect.github.com/python-pillow/Pillow/issues/6549) \[radarhere] - Allow default ImageDraw font to be set [#6484](https://redirect.github.com/python-pillow/Pillow/issues/6484) \[radarhere, hugovk] - Save 1 mode PDF using CCITTFaxDecode filter [#6470](https://redirect.github.com/python-pillow/Pillow/issues/6470) \[radarhere] - Added support for RGBA PSD images [#6481](https://redirect.github.com/python-pillow/Pillow/issues/6481) \[radarhere] - Parse orientation from XMP tag contents [#6463](https://redirect.github.com/python-pillow/Pillow/issues/6463) \[bigcat88, radarhere] - Added support for reading ATI1/ATI2 (BC4/BC5) DDS images [#6457](https://redirect.github.com/python-pillow/Pillow/issues/6457) \[REDxEYE, radarhere] - Do not clear GIF tile when checking number of frames [#6455](https://redirect.github.com/python-pillow/Pillow/issues/6455) \[radarhere] - Support saving multiple MPO frames [#6444](https://redirect.github.com/python-pillow/Pillow/issues/6444) \[radarhere] - Do not double quote Pillow version for setuptools >= 60 [#6450](https://redirect.github.com/python-pillow/Pillow/issues/6450) \[radarhere] - Added ABGR BMP mask mode [#6436](https://redirect.github.com/python-pillow/Pillow/issues/6436) \[radarhere] - Fixed PSDraw rectangle [#6429](https://redirect.github.com/python-pillow/Pillow/issues/6429) \[radarhere] - Raise ValueError if PNG sRGB chunk is truncated [#6431](https://redirect.github.com/python-pillow/Pillow/issues/6431) \[radarhere] - Handle missing Python executable in ImageShow on macOS [#6416](https://redirect.github.com/python-pillow/Pillow/issues/6416) \[bryant1410, radarhere] ### [`v9.2.0`](https://redirect.github.com/python-pillow/Pillow/blob/HEAD/CHANGES.rst#920-2022-07-01) [Compare Source](https://redirect.github.com/python-pillow/Pillow/compare/9.1.1...9.2.0) - Deprecate ImageFont.getsize and related functions [#6381](https://redirect.github.com/python-pillow/Pillow/issues/6381) \[nulano, radarhere] - Fixed null check for fribidi_version_info in FriBiDi shim [#6376](https://redirect.github.com/python-pillow/Pillow/issues/6376) \[nulano] - Added GIF decompression bomb check [#6402](https://redirect.github.com/python-pillow/Pillow/issues/6402) \[radarhere] - Handle PCF fonts files with less than 256 characters [#6386](https://redirect.github.com/python-pillow/Pillow/issues/6386) \[dawidcrivelli, radarhere] - Improved GIF optimize condition [#6378](https://redirect.github.com/python-pillow/Pillow/issues/6378) \[raygard, radarhere] - Reverted to **array_interface** with the release of NumPy 1.23 [#6394](https://redirect.github.com/python-pillow/Pillow/issues/6394) \[radarhere] - Pad PCX palette to 768 bytes when saving [#6391](https://redirect.github.com/python-pillow/Pillow/issues/6391) \[radarhere] - Fixed bug with rounding pixels to palette colors [#6377](https://redirect.github.com/python-pillow/Pillow/issues/6377) \[btrekkie, radarhere] - Use gnome-screenshot on Linux if available [#6361](https://redirect.github.com/python-pillow/Pillow/issues/6361) \[radarhere, nulano] - Fixed loading L mode BMP RLE8 images [#6384](https://redirect.github.com/python-pillow/Pillow/issues/6384) \[radarhere] - Fixed incorrect operator in ImageCms error [#6370](https://redirect.github.com/python-pillow/Pillow/issues/6370) \[LostBenjamin, hugovk, radarhere] - Limit FPX tile size to avoid extending outside image [#6368](https://redirect.github.com/python-pillow/Pillow/issues/6368) \[radarhere] - Added support for decoding plain PPM formats [#5242](https://redirect.github.com/python-pillow/Pillow/issues/5242) \[Piolie, radarhere] - Added apply_transparency() [#6352](https://redirect.github.com/python-pillow/Pillow/issues/6352) \[radarhere] - Fixed behaviour change from endian fix [#6197](https://redirect.github.com/python-pillow/Pillow/issues/6197) \[radarhere] - Allow remapping P images with RGBA palettes [#6350](https://redirect.github.com/python-pillow/Pillow/issues/6350) \[radarhere] - Fixed drawing translucent 1px high polygons [#6278](https://redirect.github.com/python-pillow/Pillow/issues/6278) \[radarhere] - Pad COLORMAP to 768 items when saving TIFF [#6232](https://redirect.github.com/python-pillow/Pillow/issues/6232) \[radarhere] - Fix P -> PA conversion [#6337](https://redirect.github.com/python-pillow/Pillow/issues/6337) \[RedShy, radarhere] - Once exif data is parsed, do not reload unless it changes [#6335](https://redirect.github.com/python-pillow/Pillow/issues/6335) \[radarhere] - Only try to connect discontiguous corners at the end of edges [#6303](https://redirect.github.com/python-pillow/Pillow/issues/6303) \[radarhere] - Improve transparency handling when saving GIF images [#6176](https://redirect.github.com/python-pillow/Pillow/issues/6176) \[radarhere] - Do not update GIF frame position until local image is found [#6219](https://redirect.github.com/python-pillow/Pillow/issues/6219) \[radarhere] - Netscape GIF extension belongs after the global color table [#6211](https://redirect.github.com/python-pillow/Pillow/issues/6211) \[radarhere] - Only write GIF comments at the beginning of the file [#6300](https://redirect.github.com/python-pillow/Pillow/issues/6300) \[raygard, radarhere] - Separate multiple GIF comment blocks with newlines [#6294](https://redirect.github.com/python-pillow/Pillow/issues/6294) \[raygard, radarhere] - Always use GIF89a for comments [#6292](https://redirect.github.com/python-pillow/Pillow/issues/6292) \[raygard, radarhere] - Ignore compression value from BMP info dictionary when saving as TIFF [#6231](https://redirect.github.com/python-pillow/Pillow/issues/6231) \[radarhere] - If font is file-like object, do not re-read from object to get variant [#6234](https://redirect.github.com/python-pillow/Pillow/issues/6234) \[radarhere] - Raise ValueError when trying to access internal fp after close [#6213](https://redirect.github.com/python-pillow/Pillow/issues/6213) \[radarhere] - Support more affine expression forms in im.point() [#6254](https://redirect.github.com/python-pillow/Pillow/issues/6254) \[benrg, radarhere] - Populate Python palette in fromarray() [#6283](https://redirect.github.com/python-pillow/Pillow/issues/6283) \[radarhere] - Raise ValueError if PNG chunks are truncated [#6253](https://redirect.github.com/python-pillow/Pillow/issues/6253) \[radarhere] - Use durations from each frame by default when saving GIFs [#6265](https://redirect.github.com/python-pillow/Pillow/issues/6265) \[radarhere] - Adjust BITSPERSAMPLE to match SAMPLESPERPIXEL when opening TIFFs [#6270](https://redirect.github.com/python-pillow/Pillow/issues/6270) \[radarhere] - Search pkgconf system libs/cflags [#6138](https://redirect.github.com/python-pillow/Pillow/issues/6138) \[jameshilliard, radarhere] - Raise ValueError for invalid PPM maxval [#6242](https://redirect.github.com/python-pillow/Pillow/issues/6242) \[radarhere] - Corrected screencapture argument in ImageGrab.grab() [#6244](https://redirect.github.com/python-pillow/Pillow/issues/6244) \[axt-one] - Deprecate support for Qt 5 (PyQt5 and PySide2) [#6237](https://redirect.github.com/python-pillow/Pillow/issues/6237) \[hugovk, radarhere] - Increase wait time of temporary file deletion on Windows [#6224](https://redirect.github.com/python-pillow/Pillow/issues/6224) \[AlexTedeschi] - Deprecate FreeTypeFont.getmask2 fill parameter [#6220](https://redirect.github.com/python-pillow/Pillow/issues/6220) \[nulano, radarhere, hugovk] - Round lut values where necessary [#6188](https://redirect.github.com/python-pillow/Pillow/issues/6188) \[radarhere] - Load before getting size in resize() [#6190](https://redirect.github.com/python-pillow/Pillow/issues/6190) \[radarhere] - Load image before performing size calculations in thumbnail() [#6186](https://redirect.github.com/python-pillow/Pillow/issues/6186) \[radarhere] - Deprecated PhotoImage.paste() box parameter [#6178](https://redirect.github.com/python-pillow/Pillow/issues/6178) \[radarhere] ### [`v9.1.1`](https://redirect.github.com/python-pillow/Pillow/blob/HEAD/CHANGES.rst#911-2022-05-17) [Compare Source](https://redirect.github.com/python-pillow/Pillow/compare/9.1.0...9.1.1) - When reading past the end of a TGA scan line, reduce bytes left. CVE-2022-30595 \[radarhere] - Do not open images with zero or negative height [#6269](https://redirect.github.com/python-pillow/Pillow/issues/6269) \[radarhere] ### [`v9.1.0`](https://redirect.github.com/python-pillow/Pillow/blob/HEAD/CHANGES.rst#910-2022-04-01) [Compare Source](https://redirect.github.com/python-pillow/Pillow/compare/9.0.1...9.1.0) - Add support for multiple component transformation to JPEG2000 [#5500](https://redirect.github.com/python-pillow/Pillow/issues/5500) \[scaramallion, radarhere, hugovk] - Fix loading FriBiDi on Alpine [#6165](https://redirect.github.com/python-pillow/Pillow/issues/6165) \[nulano] - Added setting for converting GIF P frames to RGB [#6150](https://redirect.github.com/python-pillow/Pillow/issues/6150) \[radarhere] - Allow 1 mode images to be inverted [#6034](https://redirect.github.com/python-pillow/Pillow/issues/6034) \[radarhere] - Raise ValueError when trying to save empty JPEG [#6159](https://redirect.github.com/python-pillow/Pillow/issues/6159) \[radarhere] - Always save TIFF with contiguous planar configuration [#5973](https://redirect.github.com/python-pillow/Pillow/issues/5973) \[radarhere] - Connected discontiguous polygon corners [#5980](https://redirect.github.com/python-pillow/Pillow/issues/5980) \[radarhere] - Ensure Tkinter hook is activated for getimage() [#6032](https://redirect.github.com/python-pillow/Pillow/issues/6032) \[radarhere] - Use screencapture arguments to crop on macOS [#6152](https://redirect.github.com/python-pillow/Pillow/issues/6152) \[radarhere] - Do not mark L mode JPEG as 1 bit in PDF [#6151](https://redirect.github.com/python-pillow/Pillow/issues/6151) \[radarhere] - Added support for reading I;16R TIFF images [#6132](https://redirect.github.com/python-pillow/Pillow/issues/6132) \[radarhere] - If an error occurs after creating a file, remove the file [#6134](https://redirect.github.com/python-pillow/Pillow/issues/6134) \[radarhere] - Fixed calling DisplayViewer or XVViewer without a title [#6136](https://redirect.github.com/python-pillow/Pillow/issues/6136) \[radarhere] - Retain RGBA transparency when saving multiple GIF frames [#6128](https://redirect.github.com/python-pillow/Pillow/issues/6128) \[radarhere] - Save additional ICO frames with other bit depths if supplied [#6122](https://redirect.github.com/python-pillow/Pillow/issues/6122) \[radarhere] - Handle EXIF data truncated to just the header [#6124](https://redirect.github.com/python-pillow/Pillow/issues/6124) \[radarhere] - Added support for reading BMP images with RLE8 compression [#6102](https://redirect.github.com/python-pillow/Pillow/issues/6102) \[radarhere] - Support Python distributions where \_tkinter is compiled in [#6006](https://redirect.github.com/python-pillow/Pillow/issues/6006) \[lukegb] - Added support for PPM arbitrary maxval [#6119](https://redirect.github.com/python-pillow/Pillow/issues/6119) \[radarhere] - Added BigTIFF reading [#6097](https://redirect.github.com/python-pillow/Pillow/issues/6097) \[radarhere] - When converting, clip I;16 to be unsigned, not signed [#6112](https://redirect.github.com/python-pillow/Pillow/issues/6112) \[radarhere] - Fixed loading L mode GIF with transparency [#6086](https://redirect.github.com/python-pillow/Pillow/issues/6086) \[radarhere] - Improved handling of PPM header [#5121](https://redirect.github.com/python-pillow/Pillow/issues/5121) \[Piolie, radarhere] - Reset size when seeking away from "Large Thumbnail" MPO frame [#6101](https://redirect.github.com/python-pillow/Pillow/issues/6101) \[radarhere] - Replace requirements.txt with extras [#6072](https://redirect.github.com/python-pillow/Pillow/issues/6072) \[hugovk, radarhere] - Added PyEncoder and support BLP saving [#6069](https://redirect.github.com/python-pillow/Pillow/issues/6069) \[radarhere] - Handle TGA images with packets that cross scan lines [#6087](https://redirect.github.com/python-pillow/Pillow/issues/6087) \[radarhere] - Added FITS reading [#6056](https://redirect.github.com/python-pillow/Pillow/issues/6056) \[radarhere, hugovk] - Added rawmode argument to Image.getpalette() [#6061](https://redirect.github.com/python-pillow/Pillow/issues/6061) \[radarhere] - Fixed BUFR, GRIB and HDF5 stub saving [#6071](https://redirect.github.com/python-pillow/Pillow/issues/6071) \[radarhere] - Do not automatically remove temporary ImageShow files on Unix [#6045](https://redirect.github.com/python-pillow/Pillow/issues/6045) \[radarhere] - Correctly read JPEG compressed BLP images [#4685](https://redirect.github.com/python-pillow/Pillow/issues/4685) \[Meithal, radarhere] - Merged \_MODE_CONV typ into ImageMode as typestr [#6057](https://redirect.github.com/python-pillow/Pillow/issues/6057) \[radarhere] - Consider palette size when converting and in getpalette() [#6060](https://redirect.github.com/python-pillow/Pillow/issues/6060) \[radarhere] - Added enums [#5954](https://redirect.github.com/python-pillow/Pillow/issues/5954) \[radarhere]Configuration
📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.