Skip to main content

Simple HEIF/HEIC images plugin for Pillow base on pyhief library.

Project description

heif-image-plugin

build coverage Py Versions license

Simple HEIF/HEIC images plugin for Pillow base on pyhief library.

Originally based on the pyheif-pillow-opener code from Christian Bianciotto.

Installation

You can install heif-image-plugin from PyPI:

pip install heif-image-plugin

Install libheif binaries for saving capabilities

Ubuntu:

apt install libheif-examples libheif-plugin-x265 libheif-plugin-aomenc

How to use

Just import once before opening an image.

from PIL import Image, ImageOps
import HeifImagePlugin

image = Image.open('test.heic')
ImageOps.exif_transpose(image, in_place=True)
# requires `heif-enc` binary with installed codecs or plugins
image.save('test.avif')

How to contribute

This is not a big library but if you want to contribute is very easy!

  1. clone the repository git clone https://github.com/uploadcare/heif-image-plugin.git
  2. install all requirements make init
  3. do your fixes or add new awesome features (with tests)
  4. run the tests make test
  5. commit in new branch and make a pull request

Changelog

0.7.0

  • Depends on pyheif>=0.8.0, drop older versions support

0.6.2

  • Fix for buggy LA mode in libheif 1.17.0 - 1.18.2
  • Fix Unsupported color conversion for some images

0.6.1

  • Added compatibility with Pillow 10.1+

0.6.0

  • Minimal supported pyheif is 0.7.1
  • Added downsampling parameter for saving. Works only with subsampling == 2.
  • Transformations support updated to the latest libheif and pyheif

0.5.1

  • Fixed HEIF saving in '1' mode

0.5.0

  • Added HEIF saving support if heif-enc is installed (part of libheif)
  • Fixed HeifImageFile.verify() call
  • Extensions .heic, .avif, .heif, .hif are handled by the plugin

0.4.0

  • Bypass some decoding errors when ImageFile.LOAD_TRUNCATED_IMAGES is True.

0.3.2

  • Depends on latest pyheif.

0.3.1

! This version requires pyheif with pyheif.open API. As of 2021.11.25 this API isn't released and is in pyheif's master. See install-pyheif-master-pillow-latest target in the Makefile to install it.

  • Fixed potential vulnerability with arbitrary data in exif metadata.

0.3.0

! This version requires pyheif with pyheif.open API. As of 2021.11.25 this API isn't released and is in pyheif's master. See install-pyheif-master-pillow-latest target in the Makefile to install it.

  • pyheif.open API is used for lazy images loading.
  • Fixed an error when the plugin tries to load any ISOBMFF files.
  • AVIF files should work before, but now this is official.
  • Patched versions of pyheif and libheif with exposed transformations is supported. In this case opened image isn't transformed on loading and orientation is stored in EXIF Orientation tag like for all other image formats. This is faster and consumes less memory.

0.2.0

  • No need to register, works after import.
  • Fill info['icc_profile'] on loading.
  • Close and release file pointer after loading.
  • Deconding without custom HeifDecoder(ImageFile.PyDecoder).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

heif_image_plugin-0.7.0-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file heif_image_plugin-0.7.0-py3-none-any.whl.

File metadata

File hashes

Hashes for heif_image_plugin-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 884c94043007483a29571aff23b58762d65c522d7550d530b9462cc895187b95
MD5 80df73117c8ed78d24811307c94005b7
BLAKE2b-256 33b68673ca961d2dc9adeef1dc675abac938bc967a325078cf7da9701e829f00

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page