Wie ändere ich die Größe einer animierten GIF und halte die Transparenz?

603
Chloe

Ich habe versucht, die Größe eines animierten GIFs mit Transparenz zu ändern, aber der Hintergrund wurde weiß. Wie halte ich die Transparenz?

Ich habe https://superuser.com/a/556031/130929 gelesen und es versucht

>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 

Ich habe es auch versucht, -gifflags +transdiffaber es hat nicht geholfen, da der Blogbeitrag in der Antwort besagt, dass es sowieso der Standard ist. Ich habe es auch ohne probiert stats_mode=diff.

Ich habe es auch mit einer Palette für jedes Bild versucht, aber dadurch wurde die Datei nur größer und die Transparenz blieb erhalten.

>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 
0

1 Antwort auf die Frage

0
Chloe

Ich habe ein Upgrade von 3.4.1 auf 4.0.2 durchgeführt und es hat funktioniert. Ich habe jedoch bessere Ergebnisse mit

>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 

Um ein weißes Linienartefakt um die Kante herum zu vermeiden, indem Sie hinzufügen palettegen=reserve_transparent=on:transparency_color=ffffff.