Bei vielen Fragen zur Erstellung eines animierten Gifs aus einer Reihe von PNG-Bildern wird die Verwendung einer Variante des ImageMagick- convert
Befehls empfohlen :
convert -delay 2 -loop 0 *.png animated.gif
Ich habe jedoch einige tausend Bilder und convert
verbrauche so meinen gesamten Speicher, tausche und stürze dann ab. Welche alternative Software gibt es, die speicherbewusster ist? Ich könnte ein anderes offenes Format verwenden, wenn .gif
es nicht unterstützt wird, und ich bevorzuge ein CLI-Tool.
command-line
software-recommendation
images
conversion
dotancohen
quelle
quelle
convert -delay 2 -loop 0 0*.png animated.gif
konvertieren dann nur die Dateien, die mit einer '0' beginnen. Und so weiter.Antworten:
Es hört sich so an, als würden Sie versuchen, ein Video zu machen. In diesem Fall würde ich ein geeignetes Videoformat verwenden.
In diesem Fall würde ich ffmpeg verwenden , um die einzelnen PNG-Dateien in ein H.264-Video zu konvertieren. Da ffmpeg mit Videos arbeitet, die Stunden lang sein können, sollte es kein Problem mit Ihren Tausenden von Bildern geben. Die Verwendung von H.264 anstelle von animiertem GIF führt zu einer erheblichen Verbesserung der Bildqualität.
So etwas sollte für Sie funktionieren:
-framerate 1/2
: Hiermit stellen Sie die Bildrate auf eine halbe FPS oder 2 Sekunden pro Bild ein.-i img%04d.png
: Dies sagt ffmpeg die Dateien zu lesen ,img0000.png
obwohlimg9999.png
.-c:v libx264
: Verwenden Sie den Videocodec libx264.-crf <number>
: Qualitätseinstellung. 0 bis 51. 23 ist die Standardeinstellung. 0 ist eine verlustfreie Codierung, die eine recht hohe Bandbreite bietet. 18 ist optisch nahezu verlustfrei.-r 30
: Stellen Sie die Ausgangsbildrate auf 30 FPS ein. Jedes der eingegebenen Bilder wird dupliziert, um die Ausgabe zu dem zu machen, was Sie hier angeben. Sie können diesen Parameter auslassen, und die Ausgabedatei wird in der Eingangsframerate angezeigt, aber der resultierende Film wurde nicht richtig angezeigt, als ich ihn gerade ausprobierte.out.mp4
: Name der Ausgabedatei.Verweise:
quelle
Persönlich würde ich es nur in einer begrenzten Anzahl von Dateien anstatt auf einmal starten. Zum Beispiel so etwas:
quelle
Verwenden Sie
-limit memory 1GiB
diese Option , um den Speicherbedarf zu begrenzenconvert
.Tausende von Bildern würden ein riesiges GIF erzeugen, das auf den meisten Computern nur schwer angezeigt werden kann. Ich halte meine animierten GIFs nach Möglichkeit unter 200 Bildern. Je weniger desto besser. Wenn Sie Ihre Bilder nummerieren, werden mit diesem Befehl die ungeraden Bilder gelöscht
rm *[13579].png
.Hier ist mein typischer Workflow zum Erstellen eines animierten GIF aus einer Filmszene:
quelle
Vielleicht hilft Ihnen APNG . Es wird von einigen Browsern unterstützt , einschließlich Firefox, derzeit jedoch ohne Chrome und IE. Da es sich nur um eine PNG-Erweiterung handelt, ist es sehr einfach, PNGs in APNG zu konvertieren. Das Apngasmus- Tool kann das. Aber das Format ist so einfach, dass ich kürzlich selbst einen APNG-Assembler für Sage geschrieben habe. Eine Anpassung dieses Codes wäre eine Alternative.
quelle
Wenn Sie Tausende von png-s haben, ist das Anigif-Format seltsam. Ich würde es auf diese Weise tun, mit
avconv
:quelle
gifsicle ist ein Befehlszeilenprogramm für die Verarbeitung von GIF-Animationen. Wenn Sie Speicher gegen Geschwindigkeit eintauschen möchten, können Sie den Schalter --conserve-memory verwenden.
quelle
Neben anderen Antworten: Da Sie eine GIF-Datei erstellen möchten, gehe ich davon aus, dass Sie das Bild auf einer Webseite anzeigen möchten. Wenn ja, würde ich mich überhaupt nicht darum kümmern, deine PNGs zu konvertieren. Suchen Sie einfach bei Google nach "Javascript Diashow" und verwenden Sie eines der Millionen kostenlosen Skripte. Oder schreiben Sie Ihre eigenen, das ist wirklich trivial.
Die Vorteile dieser Vorgehensweise sind:
Es wird immer nur ein Bild in den Browser geladen, die Diashow startet schnell und beansprucht nicht viel RAM auf dem Computer des Benutzers.
Die Lösung lässt sich auf Millionen von Bildern skalieren. Oder Milliarden, wenn Sie geduldig genug sind, um sie alle zu sehen :)
Sie können Ihrer Seite Steuerelemente hinzufügen, um anzuhalten, zurückzuspulen, die Verzögerung zu ändern oder zu einem bestimmten Frame zu wechseln.
quelle