赞
踩
pyheif github: https://github.com/carsales/pyheif
Ubuntu Linux Python 3.7 安装 pyheif:
pip install pyheif pillow
转单张图片:
from PIL import Image
import pyheif
heif_file = pyheif.read("1.HEIC")
image = Image.frombytes(
heif_file.mode,
heif_file.size,
heif_file.data,
"raw",
heif_file.mode,
heif_file.stride,
)
# 保存为同名jpg
image.save("1.jpg")
将某个目录下的所有HEIC文件转为jpg,并删除原jpg:
import os from PIL import Image import pyheif src = r"/mnt/d/download/0207后提交(v1.0.2模型反馈)" def find_all_files(directory): for root, dirs, files in os.walk(directory): for file in files: yield os.path.join(root, file) files = find_all_files(src) for file in files: if file.endswith(".HEIC"): print(file) # 读取heic文件 heif_file = pyheif.read(file) image = Image.frombytes( heif_file.mode, heif_file.size, heif_file.data, "raw", heif_file.mode, heif_file.stride, ) # 保存为同名jpg image.save(file.replace("HEIC", "jpg")) # 删除 os.remove(file)
上述代码实现了一个将指定目录下所有.HEIC格式的图片文件转换成同名.jpg格式并删除原文件的功能。
首先导入了必要的库:os(用于文件和目录操作)、Pillow中的Image(用于图像处理)、以及pyheif(用于读取HEIC格式的图片文件)。
然后定义了一个函数 find_all_files,该函数使用 os.walk 遍历指定目录下的所有文件和子目录,并通过 yield 逐一返回文件路径。
接下来,通过调用 find_all_files 函数,获取指定目录下的所有文件路径,然后循环处理每个文件。如果文件路径以 .HEIC 结尾,说明该文件是HEIC格式的图片文件,于是就调用 pyheif.read 读取该文件,并使用 Image.frombytes 将读取的HEIC数据转换为Pillow中的Image对象。随后,将Image对象保存为同名.jpg文件,并使用 os.remove 删除原文件。
注意:此代码需要在支持读取HEIC格式的Python环境下运行,否则会出现无法识别.HEIC文件的错误。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。