pypi / pillow-heif
pillow-heif
What changed in pillow-heif 1, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-27.
3 breaking2 security4 new APIs and options1 performance1 tooling5 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initpillow-heif 116 changes
Breaking changes 3
Version 1.8.1 is the last version supporting Python 3.10 and Pillow 11/12; version 1.9.0 will require Pillow 13 and Python 3.11 or newer.
Saving ;10 or ;12 data with sample values above its bit depth now raises ValueError.
The minimum required libheif version is now 1.23.4.
Security 2
Fixes an out-of-bounds read when stride is smaller than the image row width.
pillow-heif: Integer Overflow in Encode Path Buffer Validation Leads to Heap Out-of-Bounds Read
New APIs and options 4
Adds draft support in the Pillow plugin for decoding embedded thumbnails.
The info dictionary can include entity_groups to identify which images form a stereo pair in spatial photos.
Adds a method for decoding embedded thumbnails.
The info dictionary supports reading and writing nominal diffuse white luminance HDR metadata with this key.
Performance 1
Uses embedded thumbnails instead of decoding the full image.
Tooling 1
The marker makes the package's type annotations visible to type checkers.
Fixes and other changes 5
Opening a file with a metadata item type that is not valid UTF-8 no longer causes a segmentation fault.
Loading a multi-frame image no longer reloads frame data on every call, discards in-place changes, or fails after thumbnail().
Names imported from pillow_heif are recognized as exported by type checkers, restoring strict mypy checks and Pyright/Pylance autocompletion.
Depth images with an item type libheif cannot decode are skipped instead of making the whole file unreadable.
Saving an image no longer raises a TypeError when its info dictionary contains non-string keys.