2024-09-01
Python
00

pyheif github: https://github.com/carsales/pyheif

Ubuntu Linux Python 3.7 安装 pyheif:

sh
pip install pyheif pillow

转单张图片:

python
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:

python
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文件的错误。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!