Skip to main content

Python 3.6+ interface to libheif library

Project description

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 pyheif

Installing from source - MacOS

brew install libffi libheif
pip install git+https://github.com/david-poirier-csn/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/david-poirier-csn/pyheif.git

Installing from source - Windows

Sorry, not going to happen!

Usage

The pyheif.read(path_or_bytes) function can be used to read 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 HeifFile 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())

The HeifFile object

The returned HeifFile 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

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 HeifFile 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")

Project details


Download files

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

Source Distribution

pyheif-0.5.1.tar.gz (17.9 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyheif-0.5.1-cp38-cp38-manylinux2014_x86_64.whl (8.2 MB view details)

Uploaded CPython 3.8

pyheif-0.5.1-cp37-cp37m-manylinux2014_x86_64.whl (8.2 MB view details)

Uploaded CPython 3.7m

pyheif-0.5.1-cp36-cp36m-manylinux2014_x86_64.whl (8.2 MB view details)

Uploaded CPython 3.6m

pyheif-0.5.1-cp36-cp36m-manylinux2014_armv7l.whl (7.2 MB view details)

Uploaded CPython 3.6m

File details

Details for the file pyheif-0.5.1.tar.gz.

File metadata

  • Download URL: pyheif-0.5.1.tar.gz
  • Upload date:
  • Size: 17.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.3

File hashes

Hashes for pyheif-0.5.1.tar.gz
Algorithm Hash digest
SHA256 f4ae1dc659b0f8daf63083a298f6ce99e8fec09cf1af125bacaee2b37a13989b
MD5 4b03f8db1c5b9347e536a77d387207ff
BLAKE2b-256 a0b574e08a65b3775153f72b2bf75adf9ca48f41db207e0d21dd7c8876e413cb

See more details on using hashes here.

File details

Details for the file pyheif-0.5.1-cp38-cp38-manylinux2014_x86_64.whl.

File metadata

  • Download URL: pyheif-0.5.1-cp38-cp38-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 8.2 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.1

File hashes

Hashes for pyheif-0.5.1-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0c25951387bea808b50c09215ddf828cfb6d834ca7bec652151272e53a809288
MD5 29a70127d92f0b17ac387cfc3f109054
BLAKE2b-256 dd0caf099ff1b5d44b60e4cc2954c8be93f94904ac11cf8396637d95ef2cd7f4

See more details on using hashes here.

File details

Details for the file pyheif-0.5.1-cp37-cp37m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: pyheif-0.5.1-cp37-cp37m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 8.2 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.1

File hashes

Hashes for pyheif-0.5.1-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ee1f757bf097cfc00a26dac8ac14de754727c7df53dcc1d79fdc6e36d4b941fe
MD5 d2f20f2c2daa28b8b3c73ca9e633d3e0
BLAKE2b-256 68fc8d4714687b351f098426832dedf8fee73a87d44bfdb15168cdbd68973e4d

See more details on using hashes here.

File details

Details for the file pyheif-0.5.1-cp36-cp36m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: pyheif-0.5.1-cp36-cp36m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 8.2 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.1

File hashes

Hashes for pyheif-0.5.1-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6e998cd4730e7c091f1d84ce23902ab873afca3b1458552700c89dbe0a85e716
MD5 4bd34f2fc32895049afc6f103bcfdcfb
BLAKE2b-256 f946dc64e00c9d3e10b08b270f0e5b9f9ebe07663a52c4197f935db07e0dbfe8

See more details on using hashes here.

File details

Details for the file pyheif-0.5.1-cp36-cp36m-manylinux2014_armv7l.whl.

File metadata

  • Download URL: pyheif-0.5.1-cp36-cp36m-manylinux2014_armv7l.whl
  • Upload date:
  • Size: 7.2 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/39.2.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.8

File hashes

Hashes for pyheif-0.5.1-cp36-cp36m-manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 5345bd60dd2f23df17f4baac2ca9ffd278aa15336f01cfd4584f89d513c1d500
MD5 eddd423f3e26a90fa64bad99f5f488c4
BLAKE2b-256 9e0148674b7a9b58d6dee046a770a09ee7a20f0aa7057ef3505a2b6f2cbe792a

See more details on using hashes here.

Supported by

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