Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

pyheif-iplweb

Hacked version for building binary wheels for macOS because of this issue.

Please use the original library here.

To build, download this repo, create virtualenv with your favourite Python version, don't forget about downloading libheic with homebrew or macports and type:

make all

In the dist directory you will find the wheel.

pyheif

Python 3.6+ interface to libheif library using CFFI

Note: currently only reading is supported.

Installation

Simple installation - Linux (installs manylinux2014 wheel, doesn't work with Alpine)

pip install --upgrade pip
pip install pyheif

Installing from source - MacOS

brew install libffi libheif
pip install git+https://github.com/carsales/pyheif.git

Installing from source - Linux

apt install libffi libheif-dev libde265-dev

or

yum install libffi libheif-devel libde265-devel

then

pip install git+https://github.com/carsales/pyheif.git

Installing from source - Windows

Sorry, not going to happen!

Usage

Read the primary image of a HEIF encoded file

The pyheif.read(path_or_bytes) function can be used to read the primary image of a HEIF encoded file. It can be passed any of the following:

  • A string path to a file on disk
  • A pathlib.Path path object
  • A Python bytes or bytearray object containing HEIF content
  • A file-like object with a .read() method that returns bytes

It returns a HeifImage object.

import pyheif

# Using a file path:
heif_file = pyheif.read("IMG_7424.HEIC")
# Or using bytes directly:
heif_file = pyheif.read(open("IMG_7424.HEIC", "rb").read())

Converting to a Pillow Image object

If your HEIF file contains an image that you would like to manipulate, you can do so using the Pillow Python library. You can convert a HeifImage to a Pillow image like so:

from PIL import Image
import pyheif

heif_file = pyheif.read("IMG_7424.HEIC")
image = Image.frombytes(
    heif_file.mode, 
    heif_file.size, 
    heif_file.data,
    "raw",
    heif_file.mode,
    heif_file.stride,
    )

Note: the mode property is passed twice - once to the mode argument of the frombytes method, and again to the mode argument of the raw decoder.

You can now use any Pillow method to manipulate the file. Here's how to convert it to JPEG:

image.save("IMG_7424.jpg", "JPEG")

Read the entire container within the HEIF file

The pyheif.open_container(path_or_bytes) function can be used to read the HEIF container from a HEIF encoded file. It takes the same parameter as pyheif.read()

It returns a HeifContainer object.

Objects

The HeifImage object

The HeifImage has the following properties:

  • mode - the image mode, e.g. "RGB" or "RGBA"
  • size - the size of the image as a (width, height) tuple of integers
  • data - the raw decoded file data, as bytes
  • metadata - a list of metadata dictionaries
  • color_profile - a color profile dictionary
  • stride - the number of bytes in a row of decoded file data
  • bit_depth - the number of bits in each component of a pixel

The UndecodedHeifImage object

This is a HEIF image that has not been decoded. Calling the UndecodedHeifImage.load() method will load the data and the object will become a HeifImage

The HeifContainer object

The HeifContainer has the following properties:

  • primary_image - the HeifTopLevelImage object of the primary image in the file.
  • top_level_images - a list of all HeifTopLevelImage objects in the file.

The HeifTopLevelImage object

The HeifTopLevelImage has the following properties:

  • id - the id of the image
  • image - the UndecodedHeifImage or HeifImage object of the image
  • is_primary - is this the primary image in the container
  • depth_image - the HeifDepthImage if there is one
  • auxiliary_images - a list of HeifAuxiliaryImage objects

The HeifDepthImage object

The HeifDepthImage has the following properties:

  • id - the id of the image
  • image - the UndecodedHeifImage or HeifImage object of the image

The HeifAuxiliaryImage object

The HeifAuxiliaryImage has the following properties:

  • id - the id of the image
  • image - the UndecodedHeifImage or HeifImage object of the image
  • type - a string indicating the type of auxiliary image

Release files for pyheif-iplweb 0.7.1.dev1176

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for pyheif-iplweb 0.7.1.dev1176
File Interpreter ABI Platform
pyheif_iplweb-0.7.1.dev1176-cp312-none-any.whl CPython 3.12 none any Details
pyheif_iplweb-0.7.1.dev1176-cp311-none-any.whl CPython 3.11 none any Details
pyheif_iplweb-0.7.1.dev1176-cp310-none-any.whl CPython 3.10 none any Details

Total release size: 303.6 kB

Release files / pyheif_iplweb-0.7.1.dev1176-cp312-none-any.whl

Download URL pyheif_iplweb-0.7.1.dev1176-cp312-none-any.whl
Size 128.6 kB
Tags CPython 3.12
SHA-256 checksum
How to use checksums
e8b1221a920086a033c964b488f1579542682d79cd2432110097417b4708d379
BLAKE2b-256 checksum
How to use checksums
3c8de80c5169685dd66039e62d35fe5613993764883be5a58e815a6cced96ce6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.12.2

Release files / pyheif_iplweb-0.7.1.dev1176-cp311-none-any.whl

Download URL pyheif_iplweb-0.7.1.dev1176-cp311-none-any.whl
Size 88.9 kB
Tags CPython 3.11
SHA-256 checksum
How to use checksums
f2de518398cbcdc6062b16e01f2acec943c38497f37e4d8e7575facfbec75c08
BLAKE2b-256 checksum
How to use checksums
95b0f88854ecfe3172ed155fedf9506f7469b9f25d69e81d6e5da88a6985044d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.12.2

Release files / pyheif_iplweb-0.7.1.dev1176-cp310-none-any.whl

Download URL pyheif_iplweb-0.7.1.dev1176-cp310-none-any.whl
Size 86.1 kB
Tags CPython 3.10
SHA-256 checksum
How to use checksums
72f7836029bf3b8b5c4cecbced2ff4234a631c578d16f9d780118950fbb906cc
BLAKE2b-256 checksum
How to use checksums
87892cee563bb91c40798da40e0c9a10f342ec896f5a641b867d2ba314fd0958
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.12.2

Release history Release notifications | RSS feed

This release

0.7.1.dev1176 This release

3 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page