Python处理AVIF图片格式

Python处理AVIF图片格式

💡 原文中文,约1200字,阅读约需3分钟。
📝

内容提要

AVIF是一种开放的、无版税的图像文件格式规范,用于存储使用AV1压缩的图像或图像序列,并将其封装在HEIF容器格式中。AVIF具有出色的压缩效率,支持高动态范围和广色域。在写博客时,可以使用Python的Pillow库和pillow-avif-plugin插件来将AVIF文件转换为webp格式。

🔎

延伸解读

AVIF 与 HEIC 的竞争关系

AVIF 和 HEIC 都使用基于 ISOBMFF 的 HEIF 容器,但压缩算法不同:AVIF 采用 AV1,HEIC 采用 HEVC。AVIF 是开放且无版税的,而 HEVC 涉及专利许可,这可能导致 AVIF 在开源生态和网络分发中更受青睐。不过,两者都面临浏览器和软件支持不统一的问题,实际选用时需考虑目标平台的兼容性。

转换前需注意的兼容性问题

文章提到,并非所有图像处理软件和浏览器都原生支持 AVIF。因此,在将 AVIF 转换为 WebP 之前,应确认源文件能被 Pillow 和 pillow-avif-plugin 正确读取。转换后的 WebP 虽然兼容性更好,但若原始 AVIF 包含 HDR 或广色域信息,转换过程可能丢失这些特性,需根据实际用途权衡。

批量转换脚本的实用细节

示例脚本使用 Path.glob("**/*.*") 递归查找所有文件,并逐个转换为 WebP。这适合博客图片的批量处理,但需注意:脚本未过滤非图片文件,若目录中存在其他类型文件,Image.open 可能报错。此外,转换后的文件保存在原目录,若需保留原始 AVIF,应提前备份或修改输出路径。

❓

Q&A

AVIF格式是什么?

AVIF是一种开放的、无版税的图像文件格式,使用AV1压缩的图像或图像序列,封装在HEIF容器中。

AVIF格式的主要优势是什么?

AVIF格式提供出色的压缩效率,能够在较小文件大小下提供高质量图像,适合网络和高分辨率图像存储。

如何在Python中转换AVIF文件为webp格式?

可以使用Pillow库和pillow-avif-plugin插件,使用Image.open读取AVIF文件,然后调用Image.save方法保存为webp格式。

安装pillow-avif-plugin的命令是什么?

安装命令为:pip install pillow pillow-avif-plugin -U。

AVIF与HEIC格式有什么区别?

AVIF与HEIC是竞争关系,AVIF使用AV1压缩,而HEIC使用HEVC进行压缩。

AVIF格式支持哪些图像特性?

AVIF支持高动态范围(HDR)和广色域(WCG),能够存储更丰富的颜色信息和亮度级别。

🏷️

标签

➡️

继续阅读