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

1

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.

Eu tentei converter essas imagens para GIF animado da seguinte maneira no 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 dos recursos do sistema são usados para que o sistema fique inutilizável e pare.

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

    
por d3pd 08.11.2015 / 10:14

1 resposta

0

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}"
    
por d3pd 09.11.2015 / 14:05