欢迎访问我的网站,希望内容对您有用,关注公众号后台领取免费AI学习资料。

Python处理AVIF图片格式

Python基础 迷途小书童 2年前 (2024-05-16) 2796次浏览 0个评论

AVIF是什么

AVIF 即 AV1 Image File Format 是一种开放的、无版税的图像文件格式规范,用于存储使用 AV1 压缩的图像或图像序列,并将其封装在 HEIF(High Efficiency Image File Format)容器格式中。AVIF 与 HEIC 是竞争关系,后者使用相同的基于 ISOBMFF 的容器格式,但使用 HEVC 进行压缩。

AVIF优势

AVIF 格式的主要优势在于它提供了出色的压缩效率,这意味着它能够在较小的文件大小下提供高质量的图像。这使得 AVIF 成为网络和存储高分辨率图像的理想选择,尤其是在希望减少数据使用量或提高加载速度的场景中。AVIF 还支持高动态范围(HDR)和广色域(WCG),这使得它能够存储更丰富的颜色信息和更广泛的亮度级别。

由于 AVIF 是一个相对较新的格式,它的支持正在逐步增加,但并不是所有的图像处理软件和浏览器都原生支持 AVIF。随着技术的发展和更多的支持,AVIF 有望成为一种流行的图像格式。

实操

在写博客的过程中,为了减少图片的大小,通常是需要将图片转换成 webp 格式。

python 中,通常使用 pillow 这个开源库来处理图片的转换。为了能够处理 avif 文件,还需要安装一个 pillow 的插件 pillow-avif-plugin,命令如下

pip install pillow pillow-avif-plugin -U

接着,就可以进行图片格式转换了

import sys
from pathlib import Path
from PIL import Image
import pillow_avif

def convert_to_webp(source):
    destination = source.with_suffix(".webp")
    image = Image.open(source)
    image.save(destination, format="webp")
    return destination

if __name__ == '__main__':
    paths = Path(sys.argv[1]).glob("**/*.*")
    for path in paths:
        webp_path = convert_to_webp(path)
        print(webp_path)

在使用之前,需要先导入库 import pillow_avif,然后使用 Image.open 方法就可以读取 avif 文件了,直接调用 Image.save 方法通过指定保存的格式(这里是 webp)来完成格式的转换。

参考资料

喜欢 (0)

您必须 登录 才能发表评论!