Changelog
### 10.2.0
```
-------------------
- Add ``keep_rgb`` option when saving JPEG to prevent conversion of RGB colorspace 7553
[bgilbert, radarhere]
- Trim glyph size in ImageFont.getmask() 7669, 7672
[radarhere, nulano]
- Deprecate IptcImagePlugin helpers 7664
[nulano, hugovk, radarhere]
- Allow uncompressed TIFF images to be saved in chunks 7650
[radarhere]
- Concatenate multiple JPEG EXIF markers 7496
[radarhere]
- Changed IPTC tile tuple to match other plugins 7661
[radarhere]
- Do not assign new fp attribute when exiting context manager 7566
[radarhere]
- Support arbitrary masks for uncompressed RGB DDS images 7589
[radarhere, akx]
- Support setting ROWSPERSTRIP tag 7654
[radarhere]
- Apply ImageFont.MAX_STRING_LENGTH to ImageFont.getmask() 7662
[radarhere]
- Optimise ``ImageColor`` using ``functools.lru_cache`` 7657
[hugovk]
- Restricted environment keys for ImageMath.eval() 7655
[wiredfool, radarhere]
- Optimise ``ImageMode.getmode`` using ``functools.lru_cache`` 7641
[hugovk, radarhere]
- Fix incorrect color blending for overlapping glyphs 7497
[ZachNagengast, nulano, radarhere]
- Attempt memory mapping when tile args is a string 7565
[radarhere]
- Fill identical pixels with transparency in subsequent frames when saving GIF 7568
[radarhere]
- Corrected duration when combining multiple GIF frames into single frame 7521
[radarhere]
- Handle disposing GIF background from outside palette 7515
[radarhere]
- Seek past the data when skipping a PSD layer 7483
[radarhere]
- Import plugins relative to the module 7576
[deliangyang, jaxx0n]
- Translate encoder error codes to strings; deprecate ``ImageFile.raise_oserror()`` 7609
[bgilbert, radarhere]
- Support reading BC4U and DX10 BC1 images 6486
[REDxEYE, radarhere, hugovk]
- Optimize ImageStat.Stat.extrema 7593
[florath, radarhere]
- Handle pathlib.Path in FreeTypeFont 7578
[radarhere, hugovk, nulano]
- Added support for reading DX10 BC4 DDS images 7603
[sambvfx, radarhere]
- Optimized ImageStat.Stat.count 7599
[florath]
- Correct PDF palette size when saving 7555
[radarhere]
- Fixed closing file pointer with olefile 0.47 7594
[radarhere]
- Raise ValueError when TrueType font size is not greater than zero 7584, 7587
[akx, radarhere]
- If absent, do not try to close fp when closing image 7557
[RaphaelVRossi, radarhere]
- Allow configuring JPEG restart marker interval on save 7488
[bgilbert, radarhere]
- Decrement reference count for PyObject 7549
[radarhere]
- Implement ``streamtype=1`` option for tables-only JPEG encoding 7491
[bgilbert, radarhere]
- If save_all PNG only has one frame, do not create animated image 7522
[radarhere]
- Fixed frombytes() for images with a zero dimension 7493
[radarhere]
```
### 10.1.0
```
-------------------
- Added TrueType default font to allow for different sizes 7354
[radarhere]
- Fixed invalid argument warning 7442
[radarhere]
- Added ImageOps cover method 7412
[radarhere, hugovk]
- Catch struct.error from truncated EXIF when reading JPEG DPI 7458
[radarhere]
- Consider default image when selecting mode for PNG save_all 7437
[radarhere]
- Support BGR;15, BGR;16 and BGR;24 access, unpacking and putdata 7303
[radarhere]
- Added CMYK to RGB unpacker 7310
[radarhere]
- Improved flexibility of XMP parsing 7274
[radarhere]
- Support reading 8-bit YCbCr TIFF images 7415
[radarhere]
- Allow saving I;16B images as PNG 7302
[radarhere]
- Corrected drawing I;16 points and writing I;16 text 7257
[radarhere]
- Set blue channel to 128 for BC5S 7413
[radarhere]
- Increase flexibility when reading IPTC fields 7319
[radarhere]
- Set C palette to be empty by default 7289
[radarhere]
- Added gs_binary to control Ghostscript use on all platforms 7392
[radarhere]
- Read bounding box information from the trailer of EPS files if specified 7382
[nopperl, radarhere]
- Added reading 8-bit color DDS images 7426
[radarhere]
- Added has_transparency_data 7420
[radarhere, hugovk]
- Fixed bug when reading BC5S DDS images 7401
[radarhere]
- Prevent TIFF orientation from being applied more than once 7383
[radarhere]
- Use previous pixel alpha for QOI_OP_RGB 7357
[radarhere]
- Added BC5U reading 7358
[radarhere]
- Allow getpixel() to accept a list 7355
[radarhere, homm]
- Allow GaussianBlur and BoxBlur to accept a sequence of x and y radii 7336
[radarhere]
- Expand JPEG buffer size when saving optimized or progressive 7345
[radarhere]
- Added session type check for Linux in ImageGrab.grabclipboard() 7332
[TheNooB2706, radarhere, hugovk]
- Allow "loop=None" when saving GIF images 7329
[radarhere]
- Fixed transparency when saving P mode images to PDF 7323
[radarhere]
- Added saving LA images as PDFs 7299
[radarhere]
- Set SMaskInData to 1 for PDFs with alpha 7316, 7317
[radarhere]
- Changed Image mode property to be read-only by default 7307
[radarhere]
- Silence exceptions in _repr_jpeg_ and _repr_png_ 7266
[mtreinish, radarhere]
- Do not use transparency when saving GIF if it has been removed when normalizing mode 7284
[radarhere]
- Fix missing symbols when libtiff depends on libjpeg 7270
[heitbaum]
```
### 10.0.1
```
-------------------
- Updated libwebp to 1.3.2 7395
[radarhere]
- Updated zlib to 1.3 7344
[radarhere]
```
### 10.0.0
```
-------------------
- Fixed deallocating mask images 7246
[radarhere]
- Added ImageFont.MAX_STRING_LENGTH 7244
[radarhere, hugovk]
- Fix Windows build with pyproject.toml 7230
[hugovk, nulano, radarhere]
- Do not close provided file handles with libtiff 7199
[radarhere]
- Convert to HSV if mode is HSV in getcolor() 7226
[radarhere]
- Added alpha_only argument to getbbox() 7123
[radarhere. hugovk]
- Prioritise speed in _repr_png_ 7242
[radarhere]
- Do not use CFFI access by default on PyPy 7236
[radarhere]
- Limit size even if one dimension is zero in decompression bomb check 7235
[radarhere]
- Use --config-settings instead of deprecated --global-option 7171
[radarhere]
- Better C integer definitions 6645
[Yay295, hugovk]
- Fixed finding dependencies on Cygwin 7175
[radarhere]
- Changed grabclipboard() to use PNG instead of JPG compression on macOS 7219
[abey79, radarhere]
- Added in_place argument to ImageOps.exif_transpose() 7092
[radarhere]
- Fixed calling putpalette() on L and LA images before load() 7187
[radarhere]
- Fixed saving TIFF multiframe images with LONG8 tag types 7078
[radarhere]
- Fixed combining single duration across duplicate APNG frames 7146
[radarhere]
- Remove temporary file when error is raised 7148
[radarhere]
- Do not use temporary file when grabbing clipboard on Linux 7200
[radarhere]
- If the clipboard fails to open on Windows, wait and try again 7141
[radarhere]
- Fixed saving multiple 1 mode frames to GIF 7181
[radarhere]
- Replaced absolute PIL import with relative import 7173
[radarhere]
- Replaced deprecated Py_FileSystemDefaultEncoding for Python >= 3.12 7192
[radarhere]
- Improved wl-paste mimetype handling in ImageGrab 7094
[rrcgat, radarhere]
- Added _repr_jpeg_() for IPython display_jpeg 7135
[n3011, radarhere, nulano]
- Use "/sbin/ldconfig" if ldconfig is not found 7068
[radarhere]
- Prefer screenshots using XCB over gnome-screenshot 7143
[nulano, radarhere]
- Fixed joined corners for ImageDraw rounded_rectangle() odd dimensions 7151
[radarhere]
- Support reading signed 8-bit TIFF images 7111
[radarhere]
- Added width argument to ImageDraw regular_polygon 7132
[radarhere]
- Support I mode for ImageFilter.BuiltinFilter 7108
[radarhere]
- Raise error from stderr of Linux ImageGrab.grabclipboard() command 7112
[radarhere]
- Added unpacker from I;16B to I;16 7125
[radarhere]
- Support float font sizes 7107
[radarhere]
- Use later value for duplicate xref entries in PdfParser 7102
[radarhere]
- Load before getting size in __getstate__ 7105
[bigcat88, radarhere]
- Fixed type handling for include and lib directories 7069
[adisbladis, radarhere]
- Remove deprecations for Pillow 10.0.0 7059, 7080
[hugovk, radarhere]
- Drop support for soon-EOL Python 3.7 7058
[hugovk, radarhere]
```
### 9.5.0
```
------------------
- Added ImageSourceData to TAGS_V2 7053
[radarhere]
- Clear PPM half token after use 7052
[radarhere]
- Removed absolute path to ldconfig 7044
[radarhere]
- Support custom comments and PLT markers when saving JPEG2000 images 6903
[joshware, radarhere, hugovk]
- Load before getting size in __array_interface__ 7034
[radarhere]
- Support creating BGR;15, BGR;16 and BGR;24 images, but drop support for BGR;32 7010
[radarhere]
- Consider transparency when applying APNG blend mask 7018
[radarhere]
- Round duration when saving animated WebP images 6996
[radarhere]
- Added reading of JPEG2000 comments 6909
[radarhere]
- Decrement reference count 7003
[radarhere, nulano]
- Allow libtiff_support_custom_tags to be missing 7020
[radarhere]
- Improved I;16N support 6834
[radarhere]
- Added QOI reading 6852
[radarhere, hugovk]
- Added saving RGBA images as PDFs 6925
[radarhere]
- Do not raise an error if os.environ does not contain PATH 6935
[radarhere, hugovk]
- Close OleFileIO instance when closing or exiting FPX or MIC 7005
[radarhere]
- Added __int__ to IFDRational for Python >= 3.11 6998
[radarhere]
- Added memoryview support to Dib.frombytes() 6988
[radarhere, nulano]
- Close file pointer copy in the libtiff encoder if still open 6986
[fcarron, radarhere]
- Raise an error if ImageDraw co-ordinates are incorrectly ordered 6978
[radarhere]
- Added "corners" argument to ImageDraw rounded_rectangle() 6954
[radarhere]
- Added memoryview support to frombytes() 6974
[radarhere]
- Allow comments in FITS images 6973
[radarhere]
- Support saving PDF with different X and Y resolutions 6961
[jvanderneutstulen, radarhere, hugovk]
- Fixed writing int as UNDEFINED tag 6950
[radarhere]
- Raise an error if EXIF data is too long when saving JPEG 6939
[radarhere]
- Handle more than one directory returned by pkg-config 6896
[sebastic, radarhere]
- Do not retry past formats when loading all formats for the first time 6902
[radarhere]
- Do not retry specified formats if they failed when opening 6893
[radarhere]
- Do not unintentionally load TIFF format at first 6892
[radarhere]
- Stop reading when EPS line becomes too long 6897
[radarhere]
- Allow writing IFDRational to BYTE tag 6890
[radarhere]
- Raise ValueError for BoxBlur filter with negative radius 6874
[hugovk, radarhere]
- Support arbitrary number of loaded modules on Windows 6761
[javidcf, radarhere, nulano]
```
### 9.4.0
```
------------------
- Fixed null pointer dereference crash with malformed font 6846
[wiredfool, radarhere]
- Return from ImagingFill early if image has a zero dimension 6842
[radarhere]
- Reversed deprecations for Image constants, except for duplicate Resampling attributes 6830
[radarhere]
- Improve exception traceback readability 6836
[hugovk, radarhere]
- Do not attempt to read IFD1 if absent 6840
[radarhere]
- Fixed writing int as ASCII tag 6800
[radarhere]
- If available, use wl-paste or xclip for grabclipboard() on Linux 6783
[radarhere]
- Added signed option when saving JPEG2000 images 6709
[radarhere]
- Patch OpenJPEG to include ARM64 fix 6718
[radarhere]
- Added support for I;16 modes in putdata() 6825
[radarhere]
- Added conversion from RGBa to RGB 6708
[radarhere]
- Added DDS support for uncompressed L and LA images 6820
[radarhere, REDxEYE]
- Added LightSource tag values to ExifTags 6749
[radarhere]
- Fixed PyAccess after changing ICO size 6821
[radarhere]
- Do not use EXIF from info when saving PNG images 6819
[radarhere]
- Fixed saving EXIF data to MPO 6817
[radarhere]
- Added Exif hide_offsets() 6762
[radarhere]
- Only compare to previous frame when checking for duplicate GIF frames while saving 6787
[radarhere]
- Always initialize all plugins in registered_extensions() 6811
[radarhere]
- Ignore non-opaque WebP background when saving as GIF 6792
[radarhere]
- Only set tile in ImageFile __setstate__ 6793
[radarhere]
- When reading BLP, do not trust JPEG decoder to determine image is CMYK 6767
[radarhere]
- Added IFD enum to ExifTags 6748
[radarhere]
- Fixed bug combining GIF frame durations 6779
[radarhere]
- Support saving JPEG comments 6774
[smason, radarhere]
- Added getxmp() to WebPImagePlugin 6758
[radarhere]
- Added "exact" option when saving WebP 6747
[ashafaei, radarhere]
- Use fractional coordinates when drawing text 6722
[radarhere]
- Fixed writing int as BYTE tag 6740
[radarhere]
- Added MP Format Version when saving MPO 6735
[radarhere]
- Added Interop to ExifTags 6724
[radarhere]
- CVE-2007-4559 patch when building on Windows 6704
[TrellixVulnTeam, nulano, radarhere]
- Fix compiler warning: accessing 64 bytes in a region of size 48 6714
[wiredfool]
- Use verbose flag for pip install 6713
[wiredfool, radarhere]
```
### 9.3.0
```
------------------
- Limit SAMPLESPERPIXEL to avoid runtime DOS 6700
[wiredfool]
- Initialize libtiff buffer when saving 6699
[radarhere]
- Inline fname2char to fix memory leak 6329
[nulano]
- Fix memory leaks related to text features 6330
[nulano]
- Use double quotes for version check on old CPython on Windows 6695
[hugovk]
- Remove backup implementation of Round for Windows platforms 6693
[cgohlke]
- Fixed set_variation_by_name offset 6445
[radarhere]
- Fix malloc in _imagingft.c:font_setvaraxes 6690
[cgohlke]
- Release Python GIL when converting images using matrix operations 6418
[hmaarrfk]
- Added ExifTags enums 6630
[radarhere]
- Do not modify previous frame when calculating delta in PNG 6683
[radarhere]
- Added support for reading BMP images with RLE4 compression 6674
[npjg, radarhere]
- Decode JPEG compressed BLP1 data in original mode 6678
[radarhere]
- Added GPS TIFF tag info 6661
[radarhere]
- Added conversion between RGB/RGBA/RGBX and LAB 6647
[radarhere]
- Do not attempt normalization if mode is already normal 6644
[radarhere]
- Fixed seeking to an L frame in a GIF 6576
[radarhere]
- Consider all frames when selecting mode for PNG save_all 6610
[radarhere]
- Don't reassign crc on ChunkStream close 6627
[wiredfool, radarhere]
- Raise a warning if NumPy failed to raise an error during conversion 6594
[radarhere]
- Show all frames in ImageShow 6611
[radarhere]
- Allow FLI palette chunk to not be first 6626
[radarhere]
- If first GIF frame has transparency for RGB_ALWAYS loading strategy, use RGBA mode 6592
[radarhere]
- Round box position to integer when pasting embedded color 6517
[radarhere, nulano]
- Removed EXIF prefix when saving WebP 6582
[radarhere]
- Pad IM palette to 768 bytes when saving 6579
[radarhere]
- Added DDS BC6H reading 6449
[ShadelessFox, REDxEYE, radarhere]
- Added support for opening WhiteIsZero 16-bit integer TIFF images 6642
[JayWiz, radarhere]
- Raise an error when allocating translucent color to RGB palette 6654
[jsbueno, radarhere]
- Added reading of TIFF child images 6569
[radarhere]
- Improved ImageOps palette handling 6596
[PososikTeam, radarhere]
- Defer parsing of palette into colors 6567
[radarhere]
- Apply transparency to P images in ImageTk.PhotoImage 6559
[radarhere]
- Use rounding in ImageOps contain() and pad() 6522
[bibinhashley, radarhere]
- Fixed GIF remapping to palette with duplicate entries 6548
[radarhere]
- Allow remap_palette() to return an image with less than 256 palette entries 6543
[radarhere]
- Corrected BMP and TGA palette size when saving 6500
[radarhere]
- Do not call load() before draft() in Image.thumbnail 6539
[radarhere]
- Copy palette when converting from P to PA 6497
[radarhere]
- Allow RGB and RGBA values for PA image putpixel 6504
[radarhere]
- Removed support for tkinter in PyPy before Python 3.6 6551
[nulano]
- Do not use CCITTFaxDecode filter if libtiff is not available 6518
[radarhere]
- Fallback to not using mmap if buffer is not large enough 6510
[radarhere]
- Fixed writing bytes as ASCII tag 6493
[radarhere]
- Open 1 bit EPS in mode 1 6499
[radarhere]
- Removed support for tkinter before Python 1.5.2 6549
[radarhere]
- Allow default ImageDraw font to be set 6484
[radarhere, hugovk]
- Save 1 mode PDF using CCITTFaxDecode filter 6470
[radarhere]
- Added support for RGBA PSD images 6481
[radarhere]
- Parse orientation from XMP tag contents 6463
[bigcat88, radarhere]
- Added support for reading ATI1/ATI2 (BC4/BC5) DDS images 6457
[REDxEYE, radarhere]
- Do not clear GIF tile when checking number of frames 6455
[radarhere]
- Support saving multiple MPO frames 6444
[radarhere]
- Do not double quote Pillow version for setuptools >= 60 6450
[radarhere]
- Added ABGR BMP mask mode 6436
[radarhere]
- Fixed PSDraw rectangle 6429
[radarhere]
- Raise ValueError if PNG sRGB chunk is truncated 6431
[radarhere]
- Handle missing Python executable in ImageShow on macOS 6416
[bryant1410, radarhere]
```
### 9.2.0
```
------------------
- Deprecate ImageFont.getsize and related functions 6381
[nulano, radarhere]
- Fixed null check for fribidi_version_info in FriBiDi shim 6376
[nulano]
- Added GIF decompression bomb check 6402
[radarhere]
- Handle PCF fonts files with less than 256 characters 6386
[dawidcrivelli, radarhere]
- Improved GIF optimize condition 6378
[raygard, radarhere]
- Reverted to __array_interface__ with the release of NumPy 1.23 6394
[radarhere]
- Pad PCX palette to 768 bytes when saving 6391
[radarhere]
- Fixed bug with rounding pixels to palette colors 6377
[btrekkie, radarhere]
- Use gnome-screenshot on Linux if available 6361
[radarhere, nulano]
- Fixed loading L mode BMP RLE8 images 6384
[radarhere]
- Fixed incorrect operator in ImageCms error 6370
[LostBenjamin, hugovk, radarhere]
- Limit FPX tile size to avoid extending outside image 6368
[radarhere]
- Added support for decoding plain PPM formats 5242
[Piolie, radarhere]
- Added apply_transparency() 6352
[radarhere]
- Fixed behaviour change from endian fix 6197
[radarhere]
- Allow remapping P images with RGBA palettes 6350
[radarhere]
- Fixed drawing translucent 1px high polygons 6278
[radarhere]
- Pad COLORMAP to 768 items when saving TIFF 6232
[radarhere]
- Fix P -> PA conversion 6337
[RedShy, radarhere]
- Once exif data is parsed, do not reload unless it changes 6335
[radarhere]
- Only try to connect discontiguous corners at the end of edges 6303
[radarhere]
- Improve transparency handling when saving GIF images 6176
[radarhere]
- Do not update GIF frame position until local image is found 6219
[radarhere]
- Netscape GIF extension belongs after the global color table 6211
[radarhere]
- Only write GIF comments at the beginning of the file 6300
[raygard, radarhere]
- Separate multiple GIF comment blocks with newlines 6294
[raygard, radarhere]
- Always use GIF89a for comments 6292
[raygard, radarhere]
- Ignore compression value from BMP info dictionary when saving as TIFF 6231
[radarhere]
- If font is file-like object, do not re-read from object to get variant 6234
[radarhere]
- Raise ValueError when trying to access internal fp after close 6213
[radarhere]
- Support more affine expression forms in im.point() 6254
[benrg, radarhere]
- Populate Python palette in fromarray() 6283
[radarhere]
- Raise ValueError if PNG chunks are truncated 6253
[radarhere]
- Use durations from each frame by default when saving GIFs 6265
[radarhere]
- Adjust BITSPERSAMPLE to match SAMPLESPERPIXEL when opening TIFFs 6270
[radarhere]
- Search pkgconf system libs/cflags 6138
[jameshilliard, radarhere]
- Raise ValueError for invalid PPM maxval 6242
[radarhere]
- Corrected screencapture argument in ImageGrab.grab() 6244
[axt-one]
- Deprecate support for Qt 5 (PyQt5 and PySide2) 6237
[hugovk, radarhere]
- Increase wait time of temporary file deletion on Windows 6224
[AlexTedeschi]
- Deprecate FreeTypeFont.getmask2 fill parameter 6220
[nulano, radarhere, hugovk]
- Round lut values where necessary 6188
[radarhere]
- Load before getting size in resize() 6190
[radarhere]
- Load image before performing size calculations in thumbnail() 6186
[radarhere]
- Deprecated PhotoImage.paste() box parameter 6178
[radarhere]
```
### 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
[radarhere]
```
### 9.1.0
```
------------------
- Add support for multiple component transformation to JPEG2000 5500
[scaramallion, radarhere, hugovk]
- Fix loading FriBiDi on Alpine 6165
[nulano]
- Added setting for converting GIF P frames to RGB 6150
[radarhere]
- Allow 1 mode images to be inverted 6034
[radarhere]
- Raise ValueError when trying to save empty JPEG 6159
[radarhere]
- Always save TIFF with contiguous planar configuration 5973
[radarhere]
- Connected discontiguous polygon corners 5980
[radarhere]
- Ensure Tkinter hook is activated for getimage() 6032
[radarhere]
- Use screencapture arguments to crop on macOS 6152
[radarhere]
- Do not mark L mode JPEG as 1 bit in PDF 6151
[radarhere]
- Added support for reading I;16R TIFF images 6132
[radarhere]
- If an error occurs after creating a file, remove the file 6134
[radarhere]
- Fixed calling DisplayViewer or XVViewer without a title 6136
[radarhere]
- Retain RGBA transparency when saving multiple GIF frames 6128
[radarhere]
- Save additional ICO frames with other bit depths if supplied 6122
[radarhere]
- Handle EXIF data truncated to just the header 6124
[radarhere]
- Added support for reading BMP images with RLE8 compression 6102
[radarhere]
- Support Python distributions where _tkinter is compiled in 6006
[lukegb]
- Added support for PPM arbitrary maxval 6119
[radarhere]
- Added BigTIFF reading 6097
[radarhere]
- When converting, clip I;16 to be unsigned, not signed 6112
[radarhere]
- Fixed loading L mode GIF with transparency 6086
[radarhere]
- Improved handling of PPM header 5121
[Piolie, radarhere]
- Reset size when seeking away from "Large Thumbnail" MPO frame 6101
[radarhere]
- Replace requirements.txt with extras 6072
[hugovk, radarhere]
- Added PyEncoder and support BLP saving 6069
[radarhere]
- Handle TGA images with packets that cross scan lines 6087
[radarhere]
- Added FITS reading 6056
[radarhere, hugovk]
- Added rawmode argument to Image.getpalette() 6061
[radarhere]
- Fixed BUFR, GRIB and HDF5 stub saving 6071
[radarhere]
- Do not automatically remove temporary ImageShow files on Unix 6045
[radarhere]
- Correctly read JPEG compressed BLP images 4685
[Meithal, radarhere]
- Merged _MODE_CONV typ into ImageMode as typestr 6057
[radarhere]
- Consider palette size when converting and in getpalette() 6060
[radarhere]
- Added enums 5954
[radarhere]
- Ensure image is opaque after converting P to PA with RGB palette 6052
[radarhere]
- Attach RGBA palettes from putpalette() when suitable 6054
[radarhere]
- Added get_photoshop_blocks() to parse Photoshop TIFF tag 6030
[radarhere]
- Drop excess values in BITSPERSAMPLE 6041
[mikhail-iurkov]
- Added unpacker from RGBA;15 to RGB 6031
[radarhere]
- Enable arm64 for MSVC on Windows 5811
[gaborkertesz-linaro, gaborkertesz]
- Keep IPython/Jupyter text/plain output stable 5891
[shamrin, radarhere]
- Raise an error when performing a negative crop 5972
[radarhere, hugovk]
- Deprecated show_file "file" argument in favour of "path" 5959
[radarhere]
- Fixed SPIDER images for use with Bio-formats library 5956
[radarhere]
- Ensure duplicated file pointer is closed 5946
[radarhere]
- Added specific error if path coordinate type is incorrect 5942
[radarhere]
- Return an empty bytestring from tobytes() for an empty image 5938
[radarhere]
- Remove readonly from Image.__eq__ 5930
[hugovk]
```
Links
- PyPI: https://pypi.org/project/pillow
- Changelog: https://data.safetycli.com/changelogs/pillow/
This PR updates Pillow from 9.0.1 to 10.2.0.
Changelog
### 10.2.0 ``` ------------------- - Add ``keep_rgb`` option when saving JPEG to prevent conversion of RGB colorspace 7553 [bgilbert, radarhere] - Trim glyph size in ImageFont.getmask() 7669, 7672 [radarhere, nulano] - Deprecate IptcImagePlugin helpers 7664 [nulano, hugovk, radarhere] - Allow uncompressed TIFF images to be saved in chunks 7650 [radarhere] - Concatenate multiple JPEG EXIF markers 7496 [radarhere] - Changed IPTC tile tuple to match other plugins 7661 [radarhere] - Do not assign new fp attribute when exiting context manager 7566 [radarhere] - Support arbitrary masks for uncompressed RGB DDS images 7589 [radarhere, akx] - Support setting ROWSPERSTRIP tag 7654 [radarhere] - Apply ImageFont.MAX_STRING_LENGTH to ImageFont.getmask() 7662 [radarhere] - Optimise ``ImageColor`` using ``functools.lru_cache`` 7657 [hugovk] - Restricted environment keys for ImageMath.eval() 7655 [wiredfool, radarhere] - Optimise ``ImageMode.getmode`` using ``functools.lru_cache`` 7641 [hugovk, radarhere] - Fix incorrect color blending for overlapping glyphs 7497 [ZachNagengast, nulano, radarhere] - Attempt memory mapping when tile args is a string 7565 [radarhere] - Fill identical pixels with transparency in subsequent frames when saving GIF 7568 [radarhere] - Corrected duration when combining multiple GIF frames into single frame 7521 [radarhere] - Handle disposing GIF background from outside palette 7515 [radarhere] - Seek past the data when skipping a PSD layer 7483 [radarhere] - Import plugins relative to the module 7576 [deliangyang, jaxx0n] - Translate encoder error codes to strings; deprecate ``ImageFile.raise_oserror()`` 7609 [bgilbert, radarhere] - Support reading BC4U and DX10 BC1 images 6486 [REDxEYE, radarhere, hugovk] - Optimize ImageStat.Stat.extrema 7593 [florath, radarhere] - Handle pathlib.Path in FreeTypeFont 7578 [radarhere, hugovk, nulano] - Added support for reading DX10 BC4 DDS images 7603 [sambvfx, radarhere] - Optimized ImageStat.Stat.count 7599 [florath] - Correct PDF palette size when saving 7555 [radarhere] - Fixed closing file pointer with olefile 0.47 7594 [radarhere] - Raise ValueError when TrueType font size is not greater than zero 7584, 7587 [akx, radarhere] - If absent, do not try to close fp when closing image 7557 [RaphaelVRossi, radarhere] - Allow configuring JPEG restart marker interval on save 7488 [bgilbert, radarhere] - Decrement reference count for PyObject 7549 [radarhere] - Implement ``streamtype=1`` option for tables-only JPEG encoding 7491 [bgilbert, radarhere] - If save_all PNG only has one frame, do not create animated image 7522 [radarhere] - Fixed frombytes() for images with a zero dimension 7493 [radarhere] ``` ### 10.1.0 ``` ------------------- - Added TrueType default font to allow for different sizes 7354 [radarhere] - Fixed invalid argument warning 7442 [radarhere] - Added ImageOps cover method 7412 [radarhere, hugovk] - Catch struct.error from truncated EXIF when reading JPEG DPI 7458 [radarhere] - Consider default image when selecting mode for PNG save_all 7437 [radarhere] - Support BGR;15, BGR;16 and BGR;24 access, unpacking and putdata 7303 [radarhere] - Added CMYK to RGB unpacker 7310 [radarhere] - Improved flexibility of XMP parsing 7274 [radarhere] - Support reading 8-bit YCbCr TIFF images 7415 [radarhere] - Allow saving I;16B images as PNG 7302 [radarhere] - Corrected drawing I;16 points and writing I;16 text 7257 [radarhere] - Set blue channel to 128 for BC5S 7413 [radarhere] - Increase flexibility when reading IPTC fields 7319 [radarhere] - Set C palette to be empty by default 7289 [radarhere] - Added gs_binary to control Ghostscript use on all platforms 7392 [radarhere] - Read bounding box information from the trailer of EPS files if specified 7382 [nopperl, radarhere] - Added reading 8-bit color DDS images 7426 [radarhere] - Added has_transparency_data 7420 [radarhere, hugovk] - Fixed bug when reading BC5S DDS images 7401 [radarhere] - Prevent TIFF orientation from being applied more than once 7383 [radarhere] - Use previous pixel alpha for QOI_OP_RGB 7357 [radarhere] - Added BC5U reading 7358 [radarhere] - Allow getpixel() to accept a list 7355 [radarhere, homm] - Allow GaussianBlur and BoxBlur to accept a sequence of x and y radii 7336 [radarhere] - Expand JPEG buffer size when saving optimized or progressive 7345 [radarhere] - Added session type check for Linux in ImageGrab.grabclipboard() 7332 [TheNooB2706, radarhere, hugovk] - Allow "loop=None" when saving GIF images 7329 [radarhere] - Fixed transparency when saving P mode images to PDF 7323 [radarhere] - Added saving LA images as PDFs 7299 [radarhere] - Set SMaskInData to 1 for PDFs with alpha 7316, 7317 [radarhere] - Changed Image mode property to be read-only by default 7307 [radarhere] - Silence exceptions in _repr_jpeg_ and _repr_png_ 7266 [mtreinish, radarhere] - Do not use transparency when saving GIF if it has been removed when normalizing mode 7284 [radarhere] - Fix missing symbols when libtiff depends on libjpeg 7270 [heitbaum] ``` ### 10.0.1 ``` ------------------- - Updated libwebp to 1.3.2 7395 [radarhere] - Updated zlib to 1.3 7344 [radarhere] ``` ### 10.0.0 ``` ------------------- - Fixed deallocating mask images 7246 [radarhere] - Added ImageFont.MAX_STRING_LENGTH 7244 [radarhere, hugovk] - Fix Windows build with pyproject.toml 7230 [hugovk, nulano, radarhere] - Do not close provided file handles with libtiff 7199 [radarhere] - Convert to HSV if mode is HSV in getcolor() 7226 [radarhere] - Added alpha_only argument to getbbox() 7123 [radarhere. hugovk] - Prioritise speed in _repr_png_ 7242 [radarhere] - Do not use CFFI access by default on PyPy 7236 [radarhere] - Limit size even if one dimension is zero in decompression bomb check 7235 [radarhere] - Use --config-settings instead of deprecated --global-option 7171 [radarhere] - Better C integer definitions 6645 [Yay295, hugovk] - Fixed finding dependencies on Cygwin 7175 [radarhere] - Changed grabclipboard() to use PNG instead of JPG compression on macOS 7219 [abey79, radarhere] - Added in_place argument to ImageOps.exif_transpose() 7092 [radarhere] - Fixed calling putpalette() on L and LA images before load() 7187 [radarhere] - Fixed saving TIFF multiframe images with LONG8 tag types 7078 [radarhere] - Fixed combining single duration across duplicate APNG frames 7146 [radarhere] - Remove temporary file when error is raised 7148 [radarhere] - Do not use temporary file when grabbing clipboard on Linux 7200 [radarhere] - If the clipboard fails to open on Windows, wait and try again 7141 [radarhere] - Fixed saving multiple 1 mode frames to GIF 7181 [radarhere] - Replaced absolute PIL import with relative import 7173 [radarhere] - Replaced deprecated Py_FileSystemDefaultEncoding for Python >= 3.12 7192 [radarhere] - Improved wl-paste mimetype handling in ImageGrab 7094 [rrcgat, radarhere] - Added _repr_jpeg_() for IPython display_jpeg 7135 [n3011, radarhere, nulano] - Use "/sbin/ldconfig" if ldconfig is not found 7068 [radarhere] - Prefer screenshots using XCB over gnome-screenshot 7143 [nulano, radarhere] - Fixed joined corners for ImageDraw rounded_rectangle() odd dimensions 7151 [radarhere] - Support reading signed 8-bit TIFF images 7111 [radarhere] - Added width argument to ImageDraw regular_polygon 7132 [radarhere] - Support I mode for ImageFilter.BuiltinFilter 7108 [radarhere] - Raise error from stderr of Linux ImageGrab.grabclipboard() command 7112 [radarhere] - Added unpacker from I;16B to I;16 7125 [radarhere] - Support float font sizes 7107 [radarhere] - Use later value for duplicate xref entries in PdfParser 7102 [radarhere] - Load before getting size in __getstate__ 7105 [bigcat88, radarhere] - Fixed type handling for include and lib directories 7069 [adisbladis, radarhere] - Remove deprecations for Pillow 10.0.0 7059, 7080 [hugovk, radarhere] - Drop support for soon-EOL Python 3.7 7058 [hugovk, radarhere] ``` ### 9.5.0 ``` ------------------ - Added ImageSourceData to TAGS_V2 7053 [radarhere] - Clear PPM half token after use 7052 [radarhere] - Removed absolute path to ldconfig 7044 [radarhere] - Support custom comments and PLT markers when saving JPEG2000 images 6903 [joshware, radarhere, hugovk] - Load before getting size in __array_interface__ 7034 [radarhere] - Support creating BGR;15, BGR;16 and BGR;24 images, but drop support for BGR;32 7010 [radarhere] - Consider transparency when applying APNG blend mask 7018 [radarhere] - Round duration when saving animated WebP images 6996 [radarhere] - Added reading of JPEG2000 comments 6909 [radarhere] - Decrement reference count 7003 [radarhere, nulano] - Allow libtiff_support_custom_tags to be missing 7020 [radarhere] - Improved I;16N support 6834 [radarhere] - Added QOI reading 6852 [radarhere, hugovk] - Added saving RGBA images as PDFs 6925 [radarhere] - Do not raise an error if os.environ does not contain PATH 6935 [radarhere, hugovk] - Close OleFileIO instance when closing or exiting FPX or MIC 7005 [radarhere] - Added __int__ to IFDRational for Python >= 3.11 6998 [radarhere] - Added memoryview support to Dib.frombytes() 6988 [radarhere, nulano] - Close file pointer copy in the libtiff encoder if still open 6986 [fcarron, radarhere] - Raise an error if ImageDraw co-ordinates are incorrectly ordered 6978 [radarhere] - Added "corners" argument to ImageDraw rounded_rectangle() 6954 [radarhere] - Added memoryview support to frombytes() 6974 [radarhere] - Allow comments in FITS images 6973 [radarhere] - Support saving PDF with different X and Y resolutions 6961 [jvanderneutstulen, radarhere, hugovk] - Fixed writing int as UNDEFINED tag 6950 [radarhere] - Raise an error if EXIF data is too long when saving JPEG 6939 [radarhere] - Handle more than one directory returned by pkg-config 6896 [sebastic, radarhere] - Do not retry past formats when loading all formats for the first time 6902 [radarhere] - Do not retry specified formats if they failed when opening 6893 [radarhere] - Do not unintentionally load TIFF format at first 6892 [radarhere] - Stop reading when EPS line becomes too long 6897 [radarhere] - Allow writing IFDRational to BYTE tag 6890 [radarhere] - Raise ValueError for BoxBlur filter with negative radius 6874 [hugovk, radarhere] - Support arbitrary number of loaded modules on Windows 6761 [javidcf, radarhere, nulano] ``` ### 9.4.0 ``` ------------------ - Fixed null pointer dereference crash with malformed font 6846 [wiredfool, radarhere] - Return from ImagingFill early if image has a zero dimension 6842 [radarhere] - Reversed deprecations for Image constants, except for duplicate Resampling attributes 6830 [radarhere] - Improve exception traceback readability 6836 [hugovk, radarhere] - Do not attempt to read IFD1 if absent 6840 [radarhere] - Fixed writing int as ASCII tag 6800 [radarhere] - If available, use wl-paste or xclip for grabclipboard() on Linux 6783 [radarhere] - Added signed option when saving JPEG2000 images 6709 [radarhere] - Patch OpenJPEG to include ARM64 fix 6718 [radarhere] - Added support for I;16 modes in putdata() 6825 [radarhere] - Added conversion from RGBa to RGB 6708 [radarhere] - Added DDS support for uncompressed L and LA images 6820 [radarhere, REDxEYE] - Added LightSource tag values to ExifTags 6749 [radarhere] - Fixed PyAccess after changing ICO size 6821 [radarhere] - Do not use EXIF from info when saving PNG images 6819 [radarhere] - Fixed saving EXIF data to MPO 6817 [radarhere] - Added Exif hide_offsets() 6762 [radarhere] - Only compare to previous frame when checking for duplicate GIF frames while saving 6787 [radarhere] - Always initialize all plugins in registered_extensions() 6811 [radarhere] - Ignore non-opaque WebP background when saving as GIF 6792 [radarhere] - Only set tile in ImageFile __setstate__ 6793 [radarhere] - When reading BLP, do not trust JPEG decoder to determine image is CMYK 6767 [radarhere] - Added IFD enum to ExifTags 6748 [radarhere] - Fixed bug combining GIF frame durations 6779 [radarhere] - Support saving JPEG comments 6774 [smason, radarhere] - Added getxmp() to WebPImagePlugin 6758 [radarhere] - Added "exact" option when saving WebP 6747 [ashafaei, radarhere] - Use fractional coordinates when drawing text 6722 [radarhere] - Fixed writing int as BYTE tag 6740 [radarhere] - Added MP Format Version when saving MPO 6735 [radarhere] - Added Interop to ExifTags 6724 [radarhere] - CVE-2007-4559 patch when building on Windows 6704 [TrellixVulnTeam, nulano, radarhere] - Fix compiler warning: accessing 64 bytes in a region of size 48 6714 [wiredfool] - Use verbose flag for pip install 6713 [wiredfool, radarhere] ``` ### 9.3.0 ``` ------------------ - Limit SAMPLESPERPIXEL to avoid runtime DOS 6700 [wiredfool] - Initialize libtiff buffer when saving 6699 [radarhere] - Inline fname2char to fix memory leak 6329 [nulano] - Fix memory leaks related to text features 6330 [nulano] - Use double quotes for version check on old CPython on Windows 6695 [hugovk] - Remove backup implementation of Round for Windows platforms 6693 [cgohlke] - Fixed set_variation_by_name offset 6445 [radarhere] - Fix malloc in _imagingft.c:font_setvaraxes 6690 [cgohlke] - Release Python GIL when converting images using matrix operations 6418 [hmaarrfk] - Added ExifTags enums 6630 [radarhere] - Do not modify previous frame when calculating delta in PNG 6683 [radarhere] - Added support for reading BMP images with RLE4 compression 6674 [npjg, radarhere] - Decode JPEG compressed BLP1 data in original mode 6678 [radarhere] - Added GPS TIFF tag info 6661 [radarhere] - Added conversion between RGB/RGBA/RGBX and LAB 6647 [radarhere] - Do not attempt normalization if mode is already normal 6644 [radarhere] - Fixed seeking to an L frame in a GIF 6576 [radarhere] - Consider all frames when selecting mode for PNG save_all 6610 [radarhere] - Don't reassign crc on ChunkStream close 6627 [wiredfool, radarhere] - Raise a warning if NumPy failed to raise an error during conversion 6594 [radarhere] - Show all frames in ImageShow 6611 [radarhere] - Allow FLI palette chunk to not be first 6626 [radarhere] - If first GIF frame has transparency for RGB_ALWAYS loading strategy, use RGBA mode 6592 [radarhere] - Round box position to integer when pasting embedded color 6517 [radarhere, nulano] - Removed EXIF prefix when saving WebP 6582 [radarhere] - Pad IM palette to 768 bytes when saving 6579 [radarhere] - Added DDS BC6H reading 6449 [ShadelessFox, REDxEYE, radarhere] - Added support for opening WhiteIsZero 16-bit integer TIFF images 6642 [JayWiz, radarhere] - Raise an error when allocating translucent color to RGB palette 6654 [jsbueno, radarhere] - Added reading of TIFF child images 6569 [radarhere] - Improved ImageOps palette handling 6596 [PososikTeam, radarhere] - Defer parsing of palette into colors 6567 [radarhere] - Apply transparency to P images in ImageTk.PhotoImage 6559 [radarhere] - Use rounding in ImageOps contain() and pad() 6522 [bibinhashley, radarhere] - Fixed GIF remapping to palette with duplicate entries 6548 [radarhere] - Allow remap_palette() to return an image with less than 256 palette entries 6543 [radarhere] - Corrected BMP and TGA palette size when saving 6500 [radarhere] - Do not call load() before draft() in Image.thumbnail 6539 [radarhere] - Copy palette when converting from P to PA 6497 [radarhere] - Allow RGB and RGBA values for PA image putpixel 6504 [radarhere] - Removed support for tkinter in PyPy before Python 3.6 6551 [nulano] - Do not use CCITTFaxDecode filter if libtiff is not available 6518 [radarhere] - Fallback to not using mmap if buffer is not large enough 6510 [radarhere] - Fixed writing bytes as ASCII tag 6493 [radarhere] - Open 1 bit EPS in mode 1 6499 [radarhere] - Removed support for tkinter before Python 1.5.2 6549 [radarhere] - Allow default ImageDraw font to be set 6484 [radarhere, hugovk] - Save 1 mode PDF using CCITTFaxDecode filter 6470 [radarhere] - Added support for RGBA PSD images 6481 [radarhere] - Parse orientation from XMP tag contents 6463 [bigcat88, radarhere] - Added support for reading ATI1/ATI2 (BC4/BC5) DDS images 6457 [REDxEYE, radarhere] - Do not clear GIF tile when checking number of frames 6455 [radarhere] - Support saving multiple MPO frames 6444 [radarhere] - Do not double quote Pillow version for setuptools >= 60 6450 [radarhere] - Added ABGR BMP mask mode 6436 [radarhere] - Fixed PSDraw rectangle 6429 [radarhere] - Raise ValueError if PNG sRGB chunk is truncated 6431 [radarhere] - Handle missing Python executable in ImageShow on macOS 6416 [bryant1410, radarhere] ``` ### 9.2.0 ``` ------------------ - Deprecate ImageFont.getsize and related functions 6381 [nulano, radarhere] - Fixed null check for fribidi_version_info in FriBiDi shim 6376 [nulano] - Added GIF decompression bomb check 6402 [radarhere] - Handle PCF fonts files with less than 256 characters 6386 [dawidcrivelli, radarhere] - Improved GIF optimize condition 6378 [raygard, radarhere] - Reverted to __array_interface__ with the release of NumPy 1.23 6394 [radarhere] - Pad PCX palette to 768 bytes when saving 6391 [radarhere] - Fixed bug with rounding pixels to palette colors 6377 [btrekkie, radarhere] - Use gnome-screenshot on Linux if available 6361 [radarhere, nulano] - Fixed loading L mode BMP RLE8 images 6384 [radarhere] - Fixed incorrect operator in ImageCms error 6370 [LostBenjamin, hugovk, radarhere] - Limit FPX tile size to avoid extending outside image 6368 [radarhere] - Added support for decoding plain PPM formats 5242 [Piolie, radarhere] - Added apply_transparency() 6352 [radarhere] - Fixed behaviour change from endian fix 6197 [radarhere] - Allow remapping P images with RGBA palettes 6350 [radarhere] - Fixed drawing translucent 1px high polygons 6278 [radarhere] - Pad COLORMAP to 768 items when saving TIFF 6232 [radarhere] - Fix P -> PA conversion 6337 [RedShy, radarhere] - Once exif data is parsed, do not reload unless it changes 6335 [radarhere] - Only try to connect discontiguous corners at the end of edges 6303 [radarhere] - Improve transparency handling when saving GIF images 6176 [radarhere] - Do not update GIF frame position until local image is found 6219 [radarhere] - Netscape GIF extension belongs after the global color table 6211 [radarhere] - Only write GIF comments at the beginning of the file 6300 [raygard, radarhere] - Separate multiple GIF comment blocks with newlines 6294 [raygard, radarhere] - Always use GIF89a for comments 6292 [raygard, radarhere] - Ignore compression value from BMP info dictionary when saving as TIFF 6231 [radarhere] - If font is file-like object, do not re-read from object to get variant 6234 [radarhere] - Raise ValueError when trying to access internal fp after close 6213 [radarhere] - Support more affine expression forms in im.point() 6254 [benrg, radarhere] - Populate Python palette in fromarray() 6283 [radarhere] - Raise ValueError if PNG chunks are truncated 6253 [radarhere] - Use durations from each frame by default when saving GIFs 6265 [radarhere] - Adjust BITSPERSAMPLE to match SAMPLESPERPIXEL when opening TIFFs 6270 [radarhere] - Search pkgconf system libs/cflags 6138 [jameshilliard, radarhere] - Raise ValueError for invalid PPM maxval 6242 [radarhere] - Corrected screencapture argument in ImageGrab.grab() 6244 [axt-one] - Deprecate support for Qt 5 (PyQt5 and PySide2) 6237 [hugovk, radarhere] - Increase wait time of temporary file deletion on Windows 6224 [AlexTedeschi] - Deprecate FreeTypeFont.getmask2 fill parameter 6220 [nulano, radarhere, hugovk] - Round lut values where necessary 6188 [radarhere] - Load before getting size in resize() 6190 [radarhere] - Load image before performing size calculations in thumbnail() 6186 [radarhere] - Deprecated PhotoImage.paste() box parameter 6178 [radarhere] ``` ### 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 [radarhere] ``` ### 9.1.0 ``` ------------------ - Add support for multiple component transformation to JPEG2000 5500 [scaramallion, radarhere, hugovk] - Fix loading FriBiDi on Alpine 6165 [nulano] - Added setting for converting GIF P frames to RGB 6150 [radarhere] - Allow 1 mode images to be inverted 6034 [radarhere] - Raise ValueError when trying to save empty JPEG 6159 [radarhere] - Always save TIFF with contiguous planar configuration 5973 [radarhere] - Connected discontiguous polygon corners 5980 [radarhere] - Ensure Tkinter hook is activated for getimage() 6032 [radarhere] - Use screencapture arguments to crop on macOS 6152 [radarhere] - Do not mark L mode JPEG as 1 bit in PDF 6151 [radarhere] - Added support for reading I;16R TIFF images 6132 [radarhere] - If an error occurs after creating a file, remove the file 6134 [radarhere] - Fixed calling DisplayViewer or XVViewer without a title 6136 [radarhere] - Retain RGBA transparency when saving multiple GIF frames 6128 [radarhere] - Save additional ICO frames with other bit depths if supplied 6122 [radarhere] - Handle EXIF data truncated to just the header 6124 [radarhere] - Added support for reading BMP images with RLE8 compression 6102 [radarhere] - Support Python distributions where _tkinter is compiled in 6006 [lukegb] - Added support for PPM arbitrary maxval 6119 [radarhere] - Added BigTIFF reading 6097 [radarhere] - When converting, clip I;16 to be unsigned, not signed 6112 [radarhere] - Fixed loading L mode GIF with transparency 6086 [radarhere] - Improved handling of PPM header 5121 [Piolie, radarhere] - Reset size when seeking away from "Large Thumbnail" MPO frame 6101 [radarhere] - Replace requirements.txt with extras 6072 [hugovk, radarhere] - Added PyEncoder and support BLP saving 6069 [radarhere] - Handle TGA images with packets that cross scan lines 6087 [radarhere] - Added FITS reading 6056 [radarhere, hugovk] - Added rawmode argument to Image.getpalette() 6061 [radarhere] - Fixed BUFR, GRIB and HDF5 stub saving 6071 [radarhere] - Do not automatically remove temporary ImageShow files on Unix 6045 [radarhere] - Correctly read JPEG compressed BLP images 4685 [Meithal, radarhere] - Merged _MODE_CONV typ into ImageMode as typestr 6057 [radarhere] - Consider palette size when converting and in getpalette() 6060 [radarhere] - Added enums 5954 [radarhere] - Ensure image is opaque after converting P to PA with RGB palette 6052 [radarhere] - Attach RGBA palettes from putpalette() when suitable 6054 [radarhere] - Added get_photoshop_blocks() to parse Photoshop TIFF tag 6030 [radarhere] - Drop excess values in BITSPERSAMPLE 6041 [mikhail-iurkov] - Added unpacker from RGBA;15 to RGB 6031 [radarhere] - Enable arm64 for MSVC on Windows 5811 [gaborkertesz-linaro, gaborkertesz] - Keep IPython/Jupyter text/plain output stable 5891 [shamrin, radarhere] - Raise an error when performing a negative crop 5972 [radarhere, hugovk] - Deprecated show_file "file" argument in favour of "path" 5959 [radarhere] - Fixed SPIDER images for use with Bio-formats library 5956 [radarhere] - Ensure duplicated file pointer is closed 5946 [radarhere] - Added specific error if path coordinate type is incorrect 5942 [radarhere] - Return an empty bytestring from tobytes() for an empty image 5938 [radarhere] - Remove readonly from Image.__eq__ 5930 [hugovk] ```Links
- PyPI: https://pypi.org/project/pillow - Changelog: https://data.safetycli.com/changelogs/pillow/