Python 3.6+版本的libheif库接口
项目描述
pyheif-iplweb
由于这个问题,为构建macOS的二进制轮而修改的版本。
请在此处使用原始库。
要构建,请下载此仓库,使用您喜欢的Python版本创建virtualenv,不要忘记使用homebrew或macports下载libheic,然后输入
make all
在dist
目录中,您可以找到轮文件。
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
bytes
或bytearray
对象 - 具有
.read()
方法返回字节的文件-like对象
它返回一个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
- 图像的idimage
- 图像的UndecodedHeifImage
或HeifImage
对象is_primary
- 这是否是容器中的主图像depth_image
- 如果有的话,是HeifDepthImage
auxiliary_images
- 一系列HeifAuxiliaryImage
对象
HeifDepthImage对象
HeifDepthImage
具有以下属性
id
- 图像的idimage
- 图像的UndecodedHeifImage
或HeifImage
对象
HeifAuxiliaryImage对象
HeifAuxiliaryImage
具有以下属性
id
- 图像的idimage
- 图像的UndecodedHeifImage
或HeifImage
对象type
- 表示辅助图像类型的字符串
项目详情
关闭
哈希值 for pyheif_iplweb-0.7.1.dev1176-cp312-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e8b1221a920086a033c964b488f1579542682d79cd2432110097417b4708d379 |
|
MD5 | b8c5cc3b7eae27d9e043953247c47924 |
|
BLAKE2b-256 | 3c8de80c5169685dd66039e62d35fe5613993764883be5a58e815a6cced96ce6 |
关闭
哈希值 for pyheif_iplweb-0.7.1.dev1176-cp311-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f2de518398cbcdc6062b16e01f2acec943c38497f37e4d8e7575facfbec75c08 |
|
MD5 | 2c6af7ba80e9e453516e55b179f9307b |
|
BLAKE2b-256 | 95b0f88854ecfe3172ed155fedf9506f7469b9f25d69e81d6e5da88a6985044d |
关闭
哈希值 for pyheif_iplweb-0.7.1.dev1176-cp310-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 72f7836029bf3b8b5c4cecbced2ff4234a631c578d16f9d780118950fbb906cc |
|
MD5 | 47bdb3a551865c9ae44666c923a9a2a8 |
|
BLAKE2b-256 | 87892cee563bb91c40798da40e0c9a10f342ec896f5a641b867d2ba314fd0958 |