Python HEIC图片转jpg

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值