如何调整动画 GIF 的大小并保持透明度?

如何调整动画 GIF 的大小并保持透明度?

我尝试调整具有透明度的动画 GIF 的大小,但背景却变成了纯白色。如何保持透明度?

我读https://superuser.com/a/556031/130929并尝试过

>set FILTERS=scale=320:-1:flags=lanczos
>ffmpeg -hide_banner -i logo.gif -vf "%FILTERS%,palettegen=stats_mode=diff" -y palette.png
>ffmpeg -hide_banner -i logo.gif -i palette.png -lavfi "%FILTERS% [x]; [x][1:v] paletteuse" logo-320.gif

我也尝试过,-gifflags +transdiff但没有帮助,因为答案中的博客文章说这是默认设置。我也尝试过不使用stats_mode=diff

我也尝试为每一帧使用一个调色板,但这只会使文件变得更大,并且无法保持透明度。

>ffmpeg -hide_banner -i logo.gif -filter_complex "[0:v] scale=320:-1:flags=lanczos,split [a][b]; [a] palettegen=stats_mode=single [p]; [b][p] paletteuse=new=1" logo-320.gif

答案1

我从 3.4.1 升级到 4.0.2,效果很好。不过,我使用

>ffmpeg -hide_banner -v warning -i logo.gif -filter_complex "[0:v] scale=320:-1:flags=lanczos,split [a][b]; [a] palettegen=reserve_transparent=on:transparency_color=ffffff [p]; [b][p] paletteuse" logo-320.gif

通过添加 来避免边缘周围出现白线伪影palettegen=reserve_transparent=on:transparency_color=ffffff

相关内容