it-swarm-eu.dev

Vytvoření animace GIF ze souborů PNG

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ů:

  1. Nedokážu říct, jaký je pokrok.
  2. Bez ohledu na to, co zkusím, příznak -delay Nemění rychlost snímků animace gif.
  3. 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é.
89
Yotam

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
54
nano

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

Zdroj: http://ubuntuforums.org/showthread.php?t=1132058

91
RobinJ

Možnost --delayconvert 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
20
BatchyX

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.

7
gregnotcraig

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ísta

Viz 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

2
xyz

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.

0
user8388891