Linux 下批量把 GIF 动图转换成动画 WebP


3 观看次数
252 字数
0 评论

如果你的目标是 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 -version

2. 单个 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.webp

3. 批量转换

当前目录所有 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"
done

4. 递归批量转换

如果你的目录结构比较复杂,我更推荐这个:

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.webp

5. 如果想删除 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' -delete

6. 我建议你的参数

如果这些 GIF 是表情、动漫片段、网站动图、截图类动画:

gif2webp -q 80

可以作为默认值。

如果主要目标是节省空间:

gif2webp -q 70

如果比较在意画质:

gif2webp -q 90

评论区

还没有人评论

添加新评论