Como posso criar um GIF animado no Ubuntu usando um conjunto de imagens?

Como posso criar um GIF animado no Ubuntu usando um conjunto de imagens?

Eu tenho um conjunto de cerca de 500 imagens JPEG. O tamanho coletivo do conjunto é de cerca de 60 MB e cada imagem tem as dimensões 480 x 270. Quero converter essas imagens em um GIF animado.

Tentei converter essas imagens em GIF animado da seguinte maneira em meu sistema i7 com 16 GB de RAM:

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

No entanto, quando faço isso, muitos recursos do sistema são consumidos que o sistema se torna inutilizável e paralisa.

Então, qual seria uma boa maneira de fazer um GIF animado no Ubuntu?

Responder1

O procedimento a seguir evita que o ImageMagick consuma recursos excessivos do sistema. Foi testado com ImageMagick 6.8.9-9 no Ubuntu 15.04. Para ilustrar o procedimento, utilizo o exemplo da conversão de um vídeo em um GIF animado.

Configure o ImageMagick de forma que não consuma recursos excessivos do 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

A variável de ambiente MAGICK_THREAD_LIMITlimita o número de threads usados ​​pelo ImageMagick (quando é construído com OpenMP habilitado). A variável de ambiente MAGICK_TMPDIRé um caminho para um diretório no qual o ImageMagick pode armazenar arquivos temporários. É particularmente útil para quadros de imagens de tamanho relativamente grande porque evita o uso excessivo de memória RAM.

Prepare o nome do arquivo de entrada, o nome do arquivo de saída e o diretório no qual as imagens do quadro serão armazenadas.

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

Converta o vídeo em várias imagens de quadro (definindo os limites de tempo conforme apropriado; neste exemplo, de 0 segundos a 30 segundos).

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

Se for razoável para restrições de tamanho do arquivo de saída, reduza o tamanho dos quadros de vídeo (neste exemplo, em 50%).

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

Use o ImageMagick para converter as imagens do quadro em um GIF animado.

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

informação relacionada