Existuje nástroj pro vytvoření animace gif
ze sady souborů png
?
Vyzkoušel jsem příkaz convert
ze sady ImageMagick suite, ale to se ne vždy podařilo. S tím mám také několik problémů:
-delay
Nemění rychlost snímků animace gif.convert
určuje pořadí snímků na základě abecedního pořadí názvů souborů. To znamená, že name500.png
Bude umístěn hned za name50.png
A ne po name450.png
Mohu to opravit přidáním 0, ale to je nepříjemné.Novější verze ffmpeg nemají žádné -sameq ( viz faq ), ale mají podporu GIF.
ffmpeg -i %03d.png output.gif
Kde% 03d je ID rámce ve 3 číslicích.
Můžete také zkusit použít ffmpeg
k vytvoření filmu ze sekvence obrázků a pak jej převést na animaci GIF (znovu pomocí ffmpeg
).
# cf. http://pages.uoregon.edu/noeckel/MakeMovie.html
# first convert an image sequence to a movie
ffmpeg -sameq -i %03d.jpg output.mp4
# ... and then convert the movie to a GIF animation
ffmpeg -i output.mp4 -pix_fmt rgb24 -s qcif -loop_output 0 output.gif
convert
je užitečný nástroj příkazového řádku. cd
do složky obsahující vaše png - soubory a spusťte tento příkaz:
convert -delay 10 -loop 0 *.png animation.gif
Možnost --delay
convert
se vztahuje pouze na další obrázek na příkazovém řádku. Takže convert -delay 10 *
Nastaví zpoždění prvního snímku na 0,1 sekundy. Tuto možnost je třeba opakovat:
convert $(for a in *; do printf -- "-delay 10 %s " $a; done; ) result.gif
Převodník pro vaše potřeby třídění netřídí rámce, globalizace Shell *
. Pokud víte, že jsou vaše snímky očíslovány od 0 do 700, můžete je spočítat sami:
convert $(for ((a=0; a<700; a++)); do printf -- "-delay 10 name%s.png " $a; done;) result.gif
Aktualizace:
Použijte convert
pro png-to-gif, pak použijte gifsicle pro animaci. Nejedná se o řešení One App To Do It All, ale o skriptování.
GIMP může vytvářet animované gify a poskytuje kontrolu pro načasování/zpoždění a opakování atd.
ffmeg důležité možnosti GIF + testovací data
Doplnit tato odpověď :
wget -O opengl-rotating-triangle.Zip https://github.com/cirosantilli/media/blob/master/opengl-rotating-triangle.zip?raw=true
unzip opengl-rotating-triangle.Zip
cd opengl-rotating-triangle
ffmpeg \
-framerate 60 \
-pattern_type glob \
-i 'tmp.*.png' \
-r 15 \
-vf scale=512:-1 \
out.gif \
;
Data testu byla vygenerována pomocí: https://stackoverflow.com/questions/3191978/how-to-use-glut-opengl-to-render-to-a-file/14324292#14324292
Důležité možnosti ffmpeg
, které jsem chtěl zdůraznit, jsou:
-patter_type glob
: pohodlný způsob výběru obrázků-framerate 60
a -r 15
: Předpokládejme 60 FPS na vstupních obrázcích (ffmpeg
nemůže vědět jinak, protože žádná data FPS v obrazech jako ve video formátech), vyberte jeden každý 4 obrázky, aby se zmenšila velikost (4 == 60 / 15
)-vf scale=512:-1
: nastavte šířku, výšku měřítka proporcionálně, obvykle pro zmenšení velikosti a úsporu místaViz také:
Testováno v Ubuntu 18.10, ffmpeg 4.0.2.
ImageMagick dokáže generovat kvalitní animaci gif. Podívejte se na toto video - http://www.youtube.com/watch?v=OFusYizJ-bA
Pokud jde o bod 2
Verze ImageMagick "display" I have (ImageMagick 6.7.2-7 2017-01-12) ignoruje nastavenou frekvenci snímků pomocí příkazu převodu k vytvoření animovaného gif. Vyzkoušejte jiný program a zobrazte animovaný gif jako firefox.