Wie kann ich in Ubuntu mithilfe eines Satzes von Bildern ein animiertes GIF erstellen?

Wie kann ich in Ubuntu mithilfe eines Satzes von Bildern ein animiertes GIF erstellen?

Ich habe einen Satz von etwa 500 JPEG-Bildern. Die Gesamtgröße des Satzes beträgt etwa 60 MB und jedes Bild hat die Abmessungen 480 x 270. Ich möchte diese Bilder in ein animiertes GIF umwandeln.

Ich habe versucht, diese Bilder auf meinem i7-System mit 16 GB RAM folgendermaßen in animierte GIFs umzuwandeln:

export MAGICK_THREAD_LIMIT=1
convert -delay 5 -loop 0 -layers optimize -limit memory 64 *.jpg output.gif

Allerdings werden dabei so viele Systemressourcen beansprucht, dass das System unbrauchbar wird und zum Stillstand kommt.

Was wäre also eine gute Möglichkeit, unter Ubuntu ein animiertes GIF zu erstellen?

Antwort1

Das folgende Verfahren verhindert, dass ImageMagick übermäßige Systemressourcen verbraucht. Es wurde mit ImageMagick 6.8.9-9 auf Ubuntu 15.04 getestet. Zur Veranschaulichung des Verfahrens verwende ich das Beispiel der Konvertierung eines Videos in ein animiertes GIF.

Richten Sie ImageMagick so ein, dass es nicht zu viele Systemressourcen verbraucht:

export MAGICK_MEMORY_LIMIT=1024
export MAGICK_MAP_LIMIT=1024
export MAGICK_AREA_LIMIT=4096
export MAGICK_FILES_LIMIT=1024
export MAGICK_THREAD_LIMIT=1
export MAGICK_TMPDIR=/home/user/tmp

Die Umgebungsvariable MAGICK_THREAD_LIMITbegrenzt die Anzahl der von ImageMagick verwendeten Threads (wenn es mit aktiviertem OpenMP erstellt wird). Die Umgebungsvariable MAGICK_TMPDIRist ein Pfad zu einem Verzeichnis, in dem ImageMagick temporäre Dateien speichern kann. Sie ist besonders nützlich für relativ große Frame-Bilder, da sie eine übermäßige RAM-Speichernutzung vermeidet.

Bereiten Sie den Eingabedateinamen, den Ausgabedateinamen und das Verzeichnis vor, in dem die Frame-Bilder gespeichert werden sollen.

filename1=2015-11-09T1300Z.mp4
filename2=2015-11-09T1300Z.gif
directoryName1="tmp_images"

Wandeln Sie das Video in eine Anzahl von Einzelbildern um (und legen Sie dabei die Zeitlimits entsprechend fest, in diesem Beispiel von 0 Sekunden bis 30 Sekunden).

mplayer -ao null -ss 0:00:00 -endpos 30 "${filename1}" -vo jpeg:outdir="${directoryName1}":quality=100

Wenn die Größenbeschränkungen der Ausgabedateien es zulassen, reduzieren Sie die Größe der Videobilder (in diesem Beispiel um 50 %).

mogrify -resize 50% "${directoryName1}"/*.jpg

Verwenden Sie ImageMagick, um die Rahmenbilder in ein animiertes GIF umzuwandeln.

convert -delay 5 -loop 0 -layers optimize -limit memory 64 "${directoryName1}"/*.jpg "${filename2}"

verwandte Informationen