Coder Social home page Coder Social logo

pyheif's Introduction

pyheif

Python 3.6+ interface to libheif library using CFFI

Installation

Simple installation (requires libheif + libde265 + x265)

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 x265-dev

or

yum install libffi libheif-devel libde265-devel x265-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_heif(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_heif("IMG_7424.HEIC")
# Or using bytes directly:
heif_file = pyheif.read_heif(open("IMG_7424.HEIC", "rb").read())

The HeifFile object

The returned HeifFile has the following properties:

  • heif_file.mode - the image mode, e.g. "RGB"
  • heif_file.size - the size of the image as a (width, height) tuple of integers
  • heif_file.data - the raw decoded file data, as bytes
  • heif_file.metadata - a list of metadata dictionaries
  • heif_file.color_profile - a color profile dictionary

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 heif_file to a Pillow image like so:

from PIL import Image
import pyheif

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

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

pyheif's People

Contributors

dependabot[bot] avatar l3o-pold avatar playpauseandstop avatar simonw avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.