NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1816 most downloaded on PyPI
Python interface for libheif library
Last release 3 months ago
10 Jun 2026
Ships fairly regularly
a new release about every 2 months
Nearly every release is documented
notes for 29 of 29 stable releases
1 version withdrawn
withdrawn after publishing
4 years old
30 releases · first in 2022
One column per quarter.
libheif was updated from the 1.21.2 to 1.23.0 version. #426
libheif was updated from the 1.21.2 to 1.23.0 version. #426libde265 was updated from the 1.0.16 to 1.1.0 version. #426libx265 was updated from the 4.1 to 4.2 version. #426libheif version is 1.19.0. #416options.ALLOW_INCORRECT_HEADERS option. Starting with libheif 1.22.0, libheif itself rejects images whose decoded size does not match the ispe header. #426sRGB NCLX color profile (BT.709 primaries) is now written by default during encoding when no color information was provided, to avoid color shifts in viewers. #407Integer overflow in encode path buffer validation leading to heap out-of-bounds read. ( CVE-2026-28231 , GHSA-5gjj-6r7v-ph3x ) Thanks to @kaizawa97 fo…
macOS: crash when cv2 and pillow_heif both bundle libx265 #403
cv2 and pillow_heif both bundle libx265 #403libheif was updated from the 1.20.2 to 1.21.2 version. #399
1.20.2 to 1.21.2 version. #399Python 3.9 support. #402PREFERRED_DECODER must now always be a valid, available decoder ID, or an exception will be raised. (libheif change)libheif was updated from the 1.20.1 to 1.20.2 version.
libheif was updated from the 1.19.8 to 1.20.1 version.
3.14 wheels added.libheif was updated from the 1.19.8 to 1.20.1 version.x265 was updated to the 4.1 version for Linux build to be in sync with macOS and Windows.Removed deprecated PyPy 3.9 wheels & added PyPy 3.11 wheels.
AVIF format marked as deprecated and pending for the removal.
pillow_heif.options.DISABLE_SECURITY_LIMITS to bypass security limit of libheif for the image size. #328libx265 library was updated to the latest 4.1 version.libheif was updated from the 1.19.5 to 1.19.7 version.AVIF format marked as deprecated and pending for the removal.Error argument '-Ofast' is deprecated when building from source. #305
1.18.2 to 1.19.5 version. #312x86_64), the minimum supported version for binary wheels has been raised from 12 to 13.argument '-Ofast' is deprecated when building from source. #305Initial support for parsing auxiliary images. #297 Thanks to @johncf
1.18.1 to 1.18.2 version. #278Python 3.8 support. #293C module. #298 Thanks to @johncfPillow 11.0.0 #294image.info["heif"] dictionary with camera_intrinsic_matrix HEIF specific metadata. Currently only reading is supported. #271
image.info["heif"] dictionary with camera_intrinsic_matrix HEIF specific metadata. Currently only reading is supported. #2711.17.6 to 1.18.1 version. #2493.13.0b3 wheels added; macOS arm64 Python3.8 wheels dropped. #272Minimum supported Pillow version raised to 10.1.0. #251
Pillow 10.4.0 #25410.1.0. #251xmp in info dictionary is now not present if it is empty. #254P mode with transparency = 0. #238This release contains breaking change for monochrome images.
This release contains breaking change for monochrome images.
L or I;16 mode instead of RGB. #215convert_hdr_to_8bit value now ignores monochrome images. #215subsampling parameter for encoding has higher priority than chroma. #213libehif version is 1.17.0. #2149.5.0. #216libheif_info function: added encoders and decoders keys to the result, for future libheif plugins support. #189
libheif_info function: added encoders and decoders keys to the result, for future libheif plugins support. #189options.PREFERRED_ENCODER - to use encoder different from the default one. #192options.PREFERRED_DECODER - to use decoder different from the default one. #193Synonym for chroma encoder parameter: subsampling(usage is the same as in Pillow JPEG). #161 #165
chroma encoder parameter: subsampling(usage is the same as in Pillow JPEG). #161 #165image_orientation value to libheif, instead of manually rotating image according to EXIF before encoding. #168YCbCr mode for saving without converting to RGB. #169armv7 wheels. #1601.14.1.libheif and other libraries are no longer try built automatically. #1581.16.2 to 1.17.5 version. #166 #175NCLX color profile - was reworked, updated docs, see PR for more info. #1719.2.0.cmake>=3.16.3 dropped Debian 10 armv7 wheels. #1601.0.12 to 1.0.14. changelog1.17.x. #156Linux: libaom updated to 3.6.1, musllinux builds switched to musllinux_1_2 tag.
PyPy 3.8 wheels.libaom updated to 3.6.1, musllinux builds switched to musllinux_1_2 tag.libheif using pkg-config. #128Depth Image read support, they are available as a list in im.info["depth_images"] #116
Python 3.12, PyPy 3.10 wheels.Depth Image read support, they are available as a list in im.info["depth_images"] #116options.SAVE_NCLX_PROFILE - default False to be full compatible with previous versions, but in next versions may be changed to True. #118 Thanks to @wiggin15Pillow 10.1.0Pillow version increased from 8.4.0 to 9.1.1Python 3.7 support, PyPy 3.8 wheels.Pillow-Heif. Pi-Heif still have 32-bit wheels.This release is fully compatible with previous versions.
This release is fully compatible with previous versions.
0.9.x versions to open HDR images in 10/12 bit. #96libde265(HEIF decoder) updated from 1.0.11 to 1.0.12 version. changeloglibheif updated to 1.16.2.apt-repository ppa:strukturag/libheifencode function with stride argument correctly saves image.from_bytes function with stride argument respect stride value during save.from_bytes function with stride argument can correctly translate to numpy array.This release is fully compatible with 0.10.x versions.
This release is fully compatible with 0.10.x versions.
0.11.0 - raw data again can begin with Exif\x00\x00. Thanks to @fabbaum #93deepcopy support for HeifFile class.EXIF raw data in info["exif"] is now skipping first 6 bytes(Exif\x00\x00). Like in Pillow for WEBP.
Exif\x00\x00). Like in Pillow for WEBP.deepcopy support for HeifImageFile and AvifImageFilelibde265(HEIF decoder) now has the same version as in other builds(1.0.8->1.0.11)libaom(AVIF) now has the same version as in other builds(3.4.0->3.6.0)Faster image loading implementation with Pillow 9.5.0
9.5.0options.ALLOW_INCORRECT_HEADERS option to allow loading files with invalid ispe header. Thanks to @Soooda #86libheif updated from 1.14.2 to 1.15.2Reworked version with native C extension.
Reworked version with native C extension.
LA modelibde265(HEIF decoder) updated from 1.0.9 to 1.0.11 version. changelogconvert_to method was removed, bgr_mode opt. parameter added to open_heifTwo bugs in XMP metadata handling that were causing exceptions. All versions were affected. Thanks to @eeyrw for pointing out such a problem.
Two bugs in XMP metadata handling that were causing exceptions. All versions were affected. Thanks to @eeyrw for pointing out such a problem.
libheif updated from 1.14.0 to 1.14.2
1.14.0 to 1.14.2info["nclx_profile"] changed type from bytes(format of which was not described) to dict.
convert_to method: RGBa to RGB mode support was removed(last Pillow supports it). #67nclx color profile. #64Minimum supported version of libheif to build from source is 1.13.0
libheif to build from source is 1.13.0Pillow version increased from 6.2.0 to 8.3.0, getxmp is used from Pillow now. #55options() was reworked. Added new DECODE_THREADS option. #57save method to accept exif as PIL.Image.Exif class. #51autoconf, automake and pkg-config.Deprecated options().ctx_in_memory was removed(default behaviour do not change).
musllinux_1_2_armv7l tag.libheif updated to 1.14.0 versionenc_params for save as List[Tuple[str, str]] was removed, now it accepts only Dict.options().ctx_in_memory was removed(default behaviour do not change).options().strict was removed(default behaviour do not change).check, open, read, check_heif functions was removed.scale method marked as deprecated.enc_params for save can now be of type int or float and will be automatically converted to str.manylinux_2_28_armv7l tag.3x).musllinux_1_2_armv7l tag.libheif updated to 1.14.0 versionenc_params for save as List[Tuple[str, str]] was removed, now it accepts only Dict.options().ctx_in_memory was removed(default behaviour does not change).options().strict was removed(default behaviour does not change).check, open, read, check_heif functions was removed.scale method marked as deprecated. Will be removed in 0.9.0 version.enc_params for save can now be of type int or float and will be automatically converted to str.manylinux_2_28_armv7l tag.3x).(HeifImagePlugin) register proper mimetype for HEIF format. #47
mimetype for HEIF format. #47EXIF data is corrupted. #48EXIF that do not start with b'EXIF' (Pillow 9.3.0). #46options().strict option marked as deprecated and will be removed in 0.8.0.
premultiplied alpha channel (Pillow does not fully support these).premultiplied_alpha read-write property.to_pillow method to HeifFile class.RGBA;16 -> RGBA conversion.RGBa -> RGB conversion.libaom updated from 3.4.0 to 3.5.0 version. changeloglibde265 updated from 1.0.8 to 1.0.9.get_file_mimetype function has been reworked and is now written in python.is_supported function has been reworked and is now written in python.options().strict option marked as deprecated and will be removed in 0.8.0.check_heiffunction marked as deprecated.convert_to should do nothing if the target mode is already the current image mode..avifs files, libheif does not support them.CMYK mode will be converted for RGBA mode during saving instead of throwing KeyError exception.This release is fully compatible with previous versions.
This release is fully compatible with previous versions.
libheif updated to version 1.13.0Apache 2.0Your coding agent can read these notes before it upgrades. Set up the MCP server →