You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用单条ImageMagick命令批量转换PNG为不同质量的AVIF

解决ImageMagick v7单命令生成多质量AVIF文件的问题

你的脚本核心问题在于ImageMagick的命令行执行逻辑:默认情况下只有最后一个输出路径会触发文件写入,前面的-quality设置和路径不会生效,因为缺少明确的写入指令。要实现单命令加载一次输入并输出多质量文件,需要用-write参数在处理流程中保存每个版本。

修正后的完整脚本

#!/bin/zsh
if [ $# -eq 0 ]; then
  echo "Input file required (.png)"
  exit 1
fi
infile=$1
basename="${infile%.*}"
mkdir -p avif
magick "$infile" \
  -quality 50 -write "avif/$basename-50.avif" \
  -quality 60 -write "avif/$basename-60.avif" \
  -quality 70 "avif/$basename-70.avif"

关键说明

  • 用magick替代magick convert:ImageMagick v7推荐直接使用magick作为主命令,convert是兼容旧版本的别名,无需额外调用。
  • -write参数的作用:每次设置-quality后,通过-write将当前配置下的图像写入指定文件,同时保持输入图像在内存中,继续处理后续的质量设置。最后一个输出可以省略-write,因为它是流程的最终输出节点。
  • 效率保障:输入文件仅被加载解析一次,所有后续的质量转换都基于内存中的图像数据,完全避免了多次读取磁盘文件的开销。

内容的提问来源于stack exchange,提问作者David J.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 13:57:39