跳转到主要内容

Python 3.6+ 接口到 libheif 库

项目描述

pyheif

使用CFFI将Python 3.6+接口到libheif

注意:目前仅支持读取。

安装

简单安装 - Linux(安装manylinux2014 wheel,不适用于Alpine)

pip install --upgrade pip
pip install pyheif

从源代码安装 - MacOS

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

从源代码安装 - Linux

apt install libffi libheif-dev libde265-dev

yum install libffi libheif-devel libde265-devel

然后

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

从源代码安装 - Windows

Sorry, not going to happen!

用法

读取HEIF编码文件的原始图像

可以使用pyheif.read(path_or_bytes)函数读取HEIF编码文件的原始图像。它可以传递以下任何一种

  • 磁盘上文件的字符串路径
  • pathlib.Path路径对象
  • 包含HEIF内容的Python bytesbytearray对象
  • 具有.read()方法返回字节的文件对象

它返回一个HeifImage对象。

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

转换为Pillow图像对象

如果您的HEIF文件中包含您想要操作的图像,您可以使用Pillow Python库来操作。您可以将HeifImage转换为Pillow图像,如下所示

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

注意mode属性被传递了两次 - 一次传递给frombytes方法的mode参数,再次传递给raw解码器的mode参数。

现在您可以使用任何Pillow方法来操作文件。以下是将它转换为JPEG的方法

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

读取HEIF文件内的整个容器

pyheif.open_container(path_or_bytes)函数可用于从HEIF编码文件中读取HEIF容器。它接受与pyheif.read()相同的参数

它返回一个HeifContainer对象。

对象

HeifImage对象

HeifImage具有以下属性

  • mode - 图像模式,例如“RGB”或“RGBA”
  • size - 图像的大小,作为整数元组(width, height)
  • data - 原始解码的文件数据,作为字节
  • metadata - 元数据字典列表
  • color_profile - 颜色配置文件字典
  • stride - 解码文件数据中的一行中的字节数
  • bit_depth - 像素中每个分量的位数

UndecodedHeifImage对象

这是一个尚未解码的HEIF图像。调用UndecodedHeifImage.load()方法将加载数据,对象将变为HeifImage

HeifContainer对象

HeifContainer具有以下属性

  • primary_image - 文件中主图像的HeifTopLevelImage对象。
  • top_level_images - 文件中所有HeifTopLevelImage对象的列表。

HeifTopLevelImage对象

HeifTopLevelImage具有以下属性

  • id - 图像的id
  • image - 图像的UndecodedHeifImageHeifImage对象
  • is_primary - 这是容器中的主图像吗
  • depth_image - 如果有,则为HeifDepthImage
  • auxiliary_images - HeifAuxiliaryImage对象的列表

HeifDepthImage对象

HeifDepthImage具有以下属性

  • id - 图像的id
  • image - 图像的UndecodedHeifImageHeifImage对象

HeifAuxiliaryImage对象

HeifAuxiliaryImage具有以下属性

  • id - 图像的id
  • image - 图像的UndecodedHeifImageHeifImage对象
  • type - 表示辅助图像类型的字符串

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

pyheif-0.8.0.tar.gz (20.5 kB 查看散列)

上传时间

构建分布

pyheif-0.8.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.2 MB 查看散列)

上传于 PyPy manylinux: glibc 2.17+ x86_64

pyheif-0.8.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.3 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARM64

pyheif-0.8.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.2 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ x86_64

pyheif-0.8.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.3 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARM64

pyheif-0.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.3 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ x86_64

pyheif-0.8.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.4 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ ARM64

pyheif-0.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.3 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ x86_64

pyheif-0.8.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.4 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ARM64

pyheif-0.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.3 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ x86_64

pyheif-0.8.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.4 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ ARM64

pyheif-0.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.3 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ x86-64

pyheif-0.8.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.4 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ ARM64

pyheif-0.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.3 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ x86-64

pyheif-0.8.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.4 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ ARM64

pyheif-0.8.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.3 MB 查看哈希值)

上传于 CPython 3.7m manylinux: glibc 2.17+ x86-64

pyheif-0.8.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.4 MB 查看哈希值)

上传于 CPython 3.7m manylinux: glibc 2.17+ ARM64

支持