¿Cómo puedo crear un GIF animado en Ubuntu usando un conjunto de imágenes?

¿Cómo puedo crear un GIF animado en Ubuntu usando un conjunto de imágenes?

Tengo un conjunto de unas 500 imágenes JPEG. El tamaño colectivo del conjunto es de aproximadamente 60 MB y cada imagen tiene unas dimensiones de 480 x 270. Quiero convertir estas imágenes en un GIF animado.

Intenté convertir estas imágenes a GIF animados de la siguiente manera en mi sistema i7 con 16 GB de RAM:

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

Sin embargo, cuando hago esto, se consumen tantos recursos del sistema que el sistema queda inutilizable y se detiene.

Entonces, ¿cuál sería una buena manera de crear un GIF animado en Ubuntu?

Respuesta1

El siguiente procedimiento evita que ImageMagick consuma recursos excesivos del sistema. Ha sido probado con ImageMagick 6.8.9-9 en Ubuntu 15.04. Para ilustrar el procedimiento, utilizo el ejemplo de convertir un vídeo a un GIF animado.

Configure ImageMagick de manera que no consuma recursos excesivos del sistema:

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

La variable de entorno MAGICK_THREAD_LIMITlimita la cantidad de subprocesos utilizados por ImageMagick (cuando está construido con OpenMP habilitado). La variable de entorno MAGICK_TMPDIRes una ruta a un directorio en el que ImageMagick puede almacenar archivos temporales. Es particularmente útil para imágenes de fotogramas de tamaño relativamente grande porque evita el uso excesivo de memoria RAM.

Prepare el nombre del archivo de entrada, el nombre del archivo de salida y el directorio en el que se almacenarán las imágenes del fotograma.

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

Convierta el vídeo a una cantidad de imágenes de fotogramas (estableciendo los límites de tiempo según corresponda; en este ejemplo, de 0 segundos a 30 segundos).

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

Si es razonable para las restricciones de tamaño del archivo de salida, reduzca el tamaño de los cuadros de video (en este ejemplo, en un 50%).

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

Utilice ImageMagick para convertir las imágenes del marco en un GIF animado.

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

información relacionada