如果你的目标是 Linux 下批量把 GIF 动图转换成动画 WebP,并保留动画、帧延迟和循环,我推荐优先使用 Google 官方 libwebp 的 gif2webp,而不是 ImageMagick。
gif2webp 就是专门用于 GIF → WebP 的工具;FFmpeg 也支持动画 WebP,但对于这个单一转换任务,gif2webp 更直接。FFmpeg 当前也明确提供 Animated WebP demuxer/encoder。FFmpeg
1. 安装
Ubuntu / Debian:
sudo apt update
sudo apt install webp确认:
gif2webp -version2. 单个 GIF 转动画 WebP
最简单:
gif2webp input.gif -o output.webp例如质量 80:
gif2webp -q 80 input.gif -o output.webp-q 是有损 WebP 质量参数。
如果希望尽可能保留画质:
gif2webp -q 90 input.gif -o output.webp如果主要追求文件大小:
gif2webp -q 70 input.gif -o output.webp3. 批量转换
当前目录所有 GIF:
for f in *.gif; do
gif2webp -q 80 "$f" -o "${f%.gif}.webp"
done同时兼容 .GIF:
for f in *.[Gg][Ii][Ff]; do
[ -f "$f" ] || continue
gif2webp -q 80 "$f" -o "${f%.*}.webp"
done4. 递归批量转换
如果你的目录结构比较复杂,我更推荐这个:
find . -type f -iname '*.gif' -print0 |
while IFS= read -r -d '' f; do
out="${f%.*}.webp"
[ -f "$out" ] && {
echo "跳过: $out"
continue
}
echo "转换: $f"
gif2webp -q 80 "$f" -o "$out"
done这样:
photos/
├── 001.gif
├── 002.gif
└── anime/
├── 003.gif
└── 004.gif会变成:
photos/
├── 001.gif
├── 001.webp
├── 002.gif
├── 002.webp
└── anime/
├── 003.gif
├── 003.webp
├── 004.gif
└── 004.webp5. 如果想删除 GIF
不建议直接边转换边删除。
先转换:
find . -type f -iname '*.gif' -print0 |
while IFS= read -r -d '' f; do
out="${f%.*}.webp"
gif2webp -q 80 "$f" -o "$out" &&
echo "成功: $f"
done确认 WebP 都正常之后,再删除 GIF:
find . -type f -iname '*.gif' -delete6. 我建议你的参数
如果这些 GIF 是表情、动漫片段、网站动图、截图类动画:
gif2webp -q 80可以作为默认值。
如果主要目标是节省空间:
gif2webp -q 70如果比较在意画质:
gif2webp -q 90
评论区
还没有人评论