
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_LIMIT
limita 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}"