欢迎访问我的网站,希望内容对您有用,感兴趣的可以加入免费知识星球。

Python处理AVIF图片格式

AVIF是什么

AVIFAV1 Image File Format 是一种开放的、无版税的图像文件格式规范,用于存储使用 AV1 压缩的图像或图像序列,并将其封装在 HEIFHigh Efficiency Image File Format)容器格式中。AVIFHEIC 是竞争关系,后者使用相同的基于 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)

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