如何使用Python将AVIF格式图片转换为PNG格式?
AVIF转PNG的实现方法
命令行快速转换
使用FFmpeg
FFmpeg是通用的多媒体处理工具,直接执行以下命令即可完成转换:
ffmpeg -i input.avif output.png
如果需要控制PNG压缩级别,可添加参数(取值0-9,0为无压缩,9为最高压缩):
ffmpeg -i input.avif -compression_level 6 output.png
使用libavif工具
libavif是专门处理AVIF格式的库,配套的avifdec工具可直接解码AVIF为PNG:
avifdec input.avif output.png
Python代码实现
使用Pillow(推荐)
Pillow从9.1.0版本开始支持AVIF解码,先安装带AVIF支持的版本:
pip install pillow[avif]
转换代码示例:
from PIL import Image def avif_to_png(input_path, output_path): with Image.open(input_path) as img: # AVIF的透明通道会被PNG自动保留 img.save(output_path, format="PNG") # 调用示例 avif_to_png("input.avif", "output.png")
使用pyav库
若需底层多媒体处理,可使用pyav:
pip install av
转换代码示例:
import av def avif_to_png(input_path, output_path): container = av.open(input_path) frame = next(container.decode(video=0)) img = frame.to_image() img.save(output_path, format="PNG") # 调用示例 avif_to_png("input.avif", "output.png")
注意事项
- 确保工具/库版本支持AVIF解码:Pillow需9.1.0+,FFmpeg需4.4+版本。
- AVIF的透明通道、色彩信息会被PNG完整保留,无需额外配置。
内容的提问来源于stack exchange,提问作者lia kim
相关产品推荐
相关产品推荐

