it-swarm.com.de

Erstellen einer GIF-Animation aus PNG-Dateien

Gibt es ein Tool zum Erstellen einer gif - Animation aus einer Reihe von png - Dateien?

Ich habe den Befehl convert aus der Suite ImageMagick ausprobiert, aber dies ist nicht immer erfolgreich. Außerdem habe ich einige Probleme damit:

  1. Ich kann nicht sagen, was der Fortschritt ist.
  2. Egal was ich versuche, das Flag -delay Ändert die Bildrate der GIF-Animation nicht.
  3. convert bestimmt die Frame-Reihenfolge basierend auf der alphabetischen Reihenfolge der Dateinamen. Dies bedeutet, dass name500.png Direkt nach name50.png Und nicht nach name450.png Platziert wird. Ich kann dies durch Hinzufügen von Nullen beheben, aber das ist ärgerlich.
89
Yotam

Neuere Versionen von ffmpeg haben kein -sameq ( siehe faq ), aber GIF-Unterstützung.

ffmpeg -i %03d.png output.gif

Wobei% 03d die dreistellige Frame-ID ist.

Sie können auch versuchen, mit ffmpeg einen Film aus einer Folge von Bildern zu erstellen und den Film dann in eine GIF-Animation zu konvertieren (wiederum mit 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 ist ein praktisches Befehlszeilenprogramm, um dies zu tun. cd in den Ordner mit Ihren png - Dateien und führen Sie diesen Befehl aus:

convert -delay 10 -loop 0 *.png animation.gif

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

91
RobinJ

Die convert 's --delay Option gilt nur für das nächste Bild in der Befehlszeile. Damit convert -delay 10 * setzt nur die Verzögerung des ersten Frames auf 0,1 Sekunden. Die Option muss wiederholt werden:

convert $(for a in *; do printf -- "-delay 10 %s " $a; done; ) result.gif

Für Ihre Sortieranforderungen sortiert convert keine Frames, die Shell globing * tut. Wenn Sie wissen, dass Ihre Frames von 0 bis 700 nummeriert sind, können Sie die Zahlen einfach selbst berechnen:

convert $(for ((a=0; a<700; a++)); do printf -- "-delay 10 name%s.png " $a; done;) result.gif
20
BatchyX

Update:

Verwenden Sie convert für das png-to-gif und dann gifsicle für die Animation. Es ist keine One App To Do It All-Lösung, aber sicher skriptfähig.


GIMP kann animierte Gifs erstellen und bietet Kontrolle über Timing/Verzögerung und Wiederholung usw.

7
gregnotcraig

ffmeg wichtige GIF-Optionen + Testdaten

Zur Ergänzung diese Antwort :

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 \
;

(

Die Testdaten wurden generiert mit: https://stackoverflow.com/questions/3191978/how-to-use-glut-opengl-to-render-to-a-file/14324292#14324292

Die wichtigen ffmpeg Optionen, die ich hervorheben wollte, sind:

  • -patter_type glob: bequeme Möglichkeit, Bilder auszuwählen
  • -framerate 60 und -r 15: 60 FPS für Eingabebilder annehmen (ffmpeg kann nichts anderes wissen, da keine FPS-Daten in Bildern wie in Videoformaten vorhanden sind), wählen Sie alle 4 Bilder eines aus, um die Größe zu verringern (4 == 60 / 15)
  • -vf scale=512:-1: Stellen Sie die Breite und die Skalierungshöhe proportional ein, normalerweise um die Größe zu reduzieren und Platz zu sparen

Siehe auch:

Getestet in Ubuntu 18.10, ffmpeg 4.0.2.

ImageMagick kann eine qualitativ hochwertige GIF-Animation erstellen. Überprüfen Sie dieses Video - http://www.youtube.com/watch?v=OFusYizJ-bA

2
xyz

In Bezug auf Punkt 2

Die von mir verwendete Version von ImageMagick "display" (ImageMagick 6.7.2-7 2017-01-12) ignoriert die mit dem Befehl convert festgelegte Bildrate, um das animierte GIF zu erstellen. Versuchen Sie es mit einem anderen Programm, um das animierte GIF wie Firefox anzuzeigen.

0
user8388891