跳转到主要内容

libheif库的Python接口

项目描述

pillow-heif

Analysis & Coverage Nightly build Wheels test docs codecov

PythonVersion impl pypi Downloads Downloads

Mac OS Windows Linux Alpine Linux Raspberry Pi

用于处理HEIF图像的libheif库的Python绑定和Pillow插件。

功能

  • 解码8、10、12位HEIC和AVIF文件。
  • 编码8、10、12位HEIC和AVIF文件。
  • 支持读取和写入EXIF、XMP、IPTC。
  • 支持单个文件中的多个图像和PrimaryImage属性。
  • 添加和删除缩略图。
  • 深度图像的读取。
  • 通过一行代码将HEIF支持添加到Pillow作为插件。

注意:这是一个没有编码功能的项目轻量版本 pi-heif

安装

python3 -m pip install -U pip
python3 -m pip install pillow-heif

作为Pillow插件的使用示例

from PIL import Image
from pillow_heif import register_heif_opener

register_heif_opener()

im = Image.open("image.heic")  # do whatever need with a Pillow image
im = im.rotate(13)
im.save(f"rotated_image.heic", quality=90)

使用OpenCV将16位PNG转换为10位HEIF

import cv2
import pillow_heif

cv_img = cv2.imread("16bit_with_alpha.png", cv2.IMREAD_UNCHANGED)
heif_file = pillow_heif.from_bytes(
    mode="BGRA;16",
    size=(cv_img.shape[1], cv_img.shape[0]),
    data=bytes(cv_img)
)
heif_file.save("RGBA_10bit.heic", quality=-1)

使用OpenCV将8/10/12位HEIF转换为8/16位PNG

import numpy as np
import cv2
import pillow_heif

heif_file = pillow_heif.open_heif("image.heic", convert_hdr_to_8bit=False, bgr_mode=True)
np_array = np.asarray(heif_file)
cv2.imwrite("image.png", np_array)

访问解码的图像数据

import pillow_heif

if pillow_heif.is_supported("image.heic"):
    heif_file = pillow_heif.open_heif("image.heic", convert_hdr_to_8bit=False)
    print("image size:", heif_file.size)
    print("image mode:", heif_file.mode)
    print("image data length:", len(heif_file.data))
    print("image data stride:", heif_file.stride)

将解码的图像数据作为NumPy数组获取

import numpy as np
import pillow_heif

if pillow_heif.is_supported("input.heic"):
    heif_file = pillow_heif.open_heif("input.heic")
    np_array = np.asarray(heif_file)

AVIF支持

AVIF文件的处理方式与HEIC文件相同。只需使用单独的函数来注册插件。

import pillow_heif

pillow_heif.register_avif_opener()

访问深度图像

from PIL import Image
from pillow_heif import register_heif_opener
import numpy as np

register_heif_opener()

im = Image.open("../tests/images/heif_other/pug.heic")
if im.info["depth_images"]:
    depth_im = im.info["depth_images"][0]  # Access the first depth image (usually there will be only one).
    # Depth images are instances of `class HeifDepthImage(BaseImage)`,
    # so work with them as you would with any usual image in pillow_heif.
    # Depending on what you need the depth image for, you can convert it to a NumPy array or convert it to a Pillow image.
    pil_im = depth_im.to_pillow()
    np_im = np.asarray(depth_im)
    print(pil_im)
    print(pil_im.info["metadata"])

更多信息

轮子

轮子表 macOS
Intel
macOS
Windows
musllinux* manylinux*
CPython 3.8 N/A
CPython 3.9
CPython 3.10
CPython 3.11
CPython 3.12
CPython 3.13
PyPy 3.9 v7.3 N/A
PyPy 3.10 v7.3 N/A

* x86_64, aarch64 轮子。

项目详情


下载文件

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

源分发

pillow_heif-0.18.0.tar.gz (16.2 MB 查看哈希值)

上传时间

构建分发

pillow_heif-0.18.0-pp310-pypy310_pp73-win_amd64.whl (8.5 MB 查看哈希值)

上传时间 PyPy Windows x86-64

pillow_heif-0.18.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.5 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ x86-64

pillow_heif-0.18.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (6.7 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARM64

pillow_heif-0.18.0-pp310-pypy310_pp73-macosx_14_0_arm64.whl (3.7 MB 查看哈希值)

上传于 PyPy macOS 14.0+ ARM64

pillow_heif-0.18.0-pp310-pypy310_pp73-macosx_12_0_x86_64.whl (5.3 MB 查看哈希值)

上传于 PyPy macOS 12.0+ x86-64

pillow_heif-0.18.0-pp39-pypy39_pp73-win_amd64.whl (8.5 MB 查看哈希值)

上传于 PyPy Windows x86-64

pillow_heif-0.18.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.5 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ x86-64

pillow_heif-0.18.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (6.7 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARM64

pillow_heif-0.18.0-pp39-pypy39_pp73-macosx_14_0_arm64.whl (3.7 MB 查看哈希值)

上传于 PyPy macOS 14.0+ ARM64

pillow_heif-0.18.0-pp39-pypy39_pp73-macosx_12_0_x86_64.whl (5.3 MB 查看哈希值)

上传于 PyPy macOS 12.0+ x86-64

pillow_heif-0.18.0-cp313-cp313-win_amd64.whl (8.5 MB 查看哈希值)

上传于 CPython 3.13 Windows x86-64

pillow_heif-0.18.0-cp313-cp313-musllinux_1_2_x86_64.whl (8.9 MB 查看哈希值)

上传于 CPython 3.13 musllinux: musl 1.2+ x86-64

pillow_heif-0.18.0-cp313-cp313-musllinux_1_2_aarch64.whl (8.1 MB 查看哈希值)

上传于 CPython 3.13 musllinux: musl 1.2+ ARM64

pillow_heif-0.18.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.6 MB 查看哈希值)

上传时间: CPython 3.13 manylinux: glibc 2.17+ x86-64

pillow_heif-0.18.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (6.8 MB 查看哈希值)

上传时间: CPython 3.13 manylinux: glibc 2.17+ ARM64

pillow_heif-0.18.0-cp313-cp313-macosx_14_0_arm64.whl (3.7 MB 查看哈希值)

上传时间: CPython 3.13 macOS 14.0+ ARM64

pillow_heif-0.18.0-cp313-cp313-macosx_12_0_x86_64.whl (5.3 MB 查看哈希值)

上传时间: CPython 3.13 macOS 12.0+ x86-64

pillow_heif-0.18.0-cp312-cp312-win_amd64.whl (8.5 MB 查看哈希值)

上传时间: CPython 3.12 Windows x86-64

pillow_heif-0.18.0-cp312-cp312-musllinux_1_2_x86_64.whl (8.9 MB 查看哈希值)

上传时间: CPython 3.12 musllinux: musl 1.2+ x86-64

pillow_heif-0.18.0-cp312-cp312-musllinux_1_2_aarch64.whl (8.1 MB 查看哈希值)

上传时间: CPython 3.12 musllinux: musl 1.2+ ARM64

pillow_heif-0.18.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.6 MB 查看哈希值)

上传时间: CPython 3.12 manylinux: glibc 2.17+ x86-64

pillow_heif-0.18.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (6.8 MB 查看哈希值)

上传时间: CPython 3.12 manylinux: glibc 2.17+ ARM64

pillow_heif-0.18.0-cp312-cp312-macosx_14_0_arm64.whl (3.7 MB 查看哈希值)

上传时间: CPython 3.12 macOS 14.0+ ARM64

pillow_heif-0.18.0-cp312-cp312-macosx_12_0_x86_64.whl (5.3 MB 查看哈希值)

上传于 CPython 3.12 macOS 12.0+ x86-64

pillow_heif-0.18.0-cp311-cp311-win_amd64.whl (8.5 MB 查看哈希值)

上传于 CPython 3.11 Windows x86-64

pillow_heif-0.18.0-cp311-cp311-musllinux_1_2_x86_64.whl (8.9 MB 查看哈希值)

上传于 CPython 3.11 musllinux: musl 1.2+ x86-64

pillow_heif-0.18.0-cp311-cp311-musllinux_1_2_aarch64.whl (8.1 MB 查看哈希值)

上传于 CPython 3.11 musllinux: musl 1.2+ ARM64

pillow_heif-0.18.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.6 MB 查看哈希值)

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

pillow_heif-0.18.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (6.8 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ARM64

pillow_heif-0.18.0-cp311-cp311-macosx_14_0_arm64.whl (3.7 MB 查看哈希值)

上传于 CPython 3.11 macOS 14.0+ ARM64

pillow_heif-0.18.0-cp311-cp311-macosx_12_0_x86_64.whl (5.3 MB 查看哈希值)

上传于 CPython 3.11 macOS 12.0+ x86-64

pillow_heif-0.18.0-cp310-cp310-win_amd64.whl (8.5 MB 查看哈希值)

上传于 CPython 3.10 Windows x86-64

pillow_heif-0.18.0-cp310-cp310-musllinux_1_2_x86_64.whl (8.8 MB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.2+ x86-64

pillow_heif-0.18.0-cp310-cp310-musllinux_1_2_aarch64.whl (8.1 MB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.2+ ARM64

pillow_heif-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.6 MB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.17+ x86-64

pillow_heif-0.18.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (6.8 MB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.17+ ARM64

pillow_heif-0.18.0-cp310-cp310-macosx_14_0_arm64.whl (3.7 MB 查看哈希值)

上传时间 CPython 3.10 macOS 14.0+ ARM64

pillow_heif-0.18.0-cp310-cp310-macosx_12_0_x86_64.whl (5.3 MB 查看哈希值)

上传时间 CPython 3.10 macOS 12.0+ x86-64

pillow_heif-0.18.0-cp39-cp39-win_amd64.whl (8.5 MB 查看哈希值)

上传时间 CPython 3.9 Windows x86-64

pillow_heif-0.18.0-cp39-cp39-musllinux_1_2_x86_64.whl (8.8 MB 查看哈希值)

上传时间 CPython 3.9 musllinux: musl 1.2+ x86-64

pillow_heif-0.18.0-cp39-cp39-musllinux_1_2_aarch64.whl (8.1 MB 查看哈希值)

上传时间 CPython 3.9 musllinux: musl 1.2+ ARM64

pillow_heif-0.18.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.6 MB 查看哈希值)

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

pillow_heif-0.18.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (6.8 MB 查看哈希值)

上传时间 CPython 3.9 manylinux: glibc 2.17+ ARM64

pillow_heif-0.18.0-cp39-cp39-macosx_14_0_arm64.whl (3.7 MB 查看哈希值)

上传时间 CPython 3.9 macOS 14.0+ ARM64

pillow_heif-0.18.0-cp39-cp39-macosx_12_0_x86_64.whl (5.3 MB 查看哈希值)

上传时间 CPython 3.9 macOS 12.0+ x86-64

pillow_heif-0.18.0-cp38-cp38-win_amd64.whl (8.5 MB 查看散列值)

上传时间 CPython 3.8 Windows x86-64

pillow_heif-0.18.0-cp38-cp38-musllinux_1_2_x86_64.whl (8.9 MB 查看散列值)

上传时间 CPython 3.8 musllinux: musl 1.2+ x86-64

pillow_heif-0.18.0-cp38-cp38-musllinux_1_2_aarch64.whl (8.1 MB 查看散列值)

上传时间 CPython 3.8 musllinux: musl 1.2+ ARM64

pillow_heif-0.18.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.6 MB 查看散列值)

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

pillow_heif-0.18.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (6.8 MB 查看散列值)

上传时间 CPython 3.8 manylinux: glibc 2.17+ ARM64

pillow_heif-0.18.0-cp38-cp38-macosx_12_0_x86_64.whl (5.3 MB 查看散列值)

上传时间 CPython 3.8 macOS 12.0+ x86-64

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面