尽管HEIC格式在iOS设备上表现出色,但是它并不被所有设备所支持。特别是Windows系统和一些较老的Android设备,可能无法直接打开HEIC格式的图片。此时,用户需要安装相应的解码器或使用第三方工具进行转换。
作为会Python的技术宅怎么会让第三方带广告软件给石化了?不存在的。
下面咱们用Python代码借助 pillow_heif类库,来把HEIC格式的图片解码并转换HEIC格式的图片为JPEG格式的图片。
from PIL import Image
import pillow_heif
def heic_to_jpg(input_file, output_file):
heif_file = pillow_heif.read_heif(input_file)
image = Image.frombytes(
heif_file.mode,
heif_file.size,
heif_file.data,
"raw",
heif_file.mode,
heif_file.stride,
)
image.save(output_file, "JPEG")
# 调用方式
heic_to_jpg("input.HEIC", "output.jpg")
通过上面的代码,咻的一下图片就转出来了。
接下来可能我手头不只有一张图片需要转换,我有一个文件夹的图片都需要去转换成JPG,欻欻欻。。。。代码来了:
from PIL import Image
import pillow_heif
import os
def recycle_convert(org_path, dst_path):
if os.path.isdir(org_path):
file_list= os.listdir(org_path)
for idx, file in enumerate(file_list):
sub_path = os.path.join(org_path, file)
recycle_convert(sub_path,dst_path)
elif os.path.isfile(org_path):
path,filename=os.path.split(org_path)
name,ext=os.path.splitext(filename)
if ext == ".HEIC" or ext == ".heic":
heif_file = pillow_heif.read_heif(org_path)
image = Image.frombytes(
heif_file.mode,
heif_file.size,
heif_file.data,
"raw",
heif_file.mode,
heif_file.stride,
)
file_path=os.path.join(dst_path,f"{name}.jpg")
print(file_path)
image.save(file_path,"JPEG")
else:
print(f"{org_path}is error format!")
pass
def main():
#目标图片文件夹路径
dst_path = "D:\output"
if os.path.exists(dst_path) is False:
os.makedirs(dst_path)
pass
#原始图片文件夹路径
org_path = "D:\input"
recycle_convert(org_path,dst_path)
pass
if __name__ == '__main__':
main();
PS:
pillow-heif 支持Python 3.8至3.13版本,以及Windows、macOS(包括M1芯片)、Linux和Alpine Linux系统。
安装它 pip install -U pillow-heif
想要学习更多的pillow-heif使用方法还是去阅读官方文档吧。