O procedimento a seguir evita que o ImageMagick consuma recursos excessivos do sistema. Foi testado com o ImageMagick 6.8.9-9 no Ubuntu 15.04. Para ilustrar o procedimento, utilizo o exemplo da conversão de um vídeo para um GIF animado.
Configure o ImageMagick de forma que ele 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 encadeamentos usados pelo ImageMagick (quando é compilado com o OpenMP ativado). 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 imagens de quadro 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 devem ser armazenadas.
filename1=2015-11-09T1300Z.mp4
filename2=2015-11-09T1300Z.gif
directoryName1="tmp_images"
Converta o vídeo em um número de 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 de 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 de quadros em um GIF animado.
convert -delay 5 -loop 0 -layers optimize -limit memory 64 "${directoryName1}"/*.jpg "${filename2}"