Como criar um gif a partir da linha de comando

35

Eu quero criar uma imagem animada .gif a partir de um determinado conjunto de .jpg fotos. Eu preferiria fazê-lo a partir da linha de comando, então as ferramentas de linha de comando seriam muito bem-vindas.

    
por Maythux 14.07.2015 / 12:57

3 respostas

47

Você pode usar o pacote ImageMagick . Instale-o usando o comando:

sudo apt-get install imagemagick

Agora você pode criar um gif do número de fotos ( jpg ) usando:

convert -delay 20 -loop 0 *.jpg myimage.gif
    
por Maythux 14.07.2015 / 12:57
30

Para completar a resposta @Maythux:

Para evitar gerar um arquivo muito grande, você pode usar a opção -resize :

No meu caso, tenho 4608x3456 imagens e o gif gerado foi superior a 300M para 32 imagens

convert -resize 20% -delay 20 -loop 0 *.jpg myimage.gif

ou

convert -resize 768x576 -delay 20 -loop 0 *.jpg myimage.gif

Cuide de * .jpg

*.jpg é um pouco ruim quando se lida com valores numéricos, você pode gerar um gif com fotos não separadas.

$ ls|cat
21-33-26_1.jpg
21-33-26_10.jpg   // <--- this one
21-33-26_2.jpg
21-33-26_3.jpg
21-33-26_4.jpg
21-33-26_5.jpg
21-33-26_6.jpg
21-33-26_7.jpg
21-33-26_8.jpg
21-33-26_9.jpg
21-33-28_1.jpg    // <--- should be here    
21-33-28_2.jpg
21-33-28_3.jpg
...

Como as fotos foram tiradas muito rapidamente (10 / s), todas elas têm o mesmo tempo de modificação e você não pode usar ls -t , por exemplo. No Ubuntu você pode usar ls -v , algo como:

convert -resize 768x576 -delay 20 -loop 0 'ls -v' myimage.gif

A classificação numérica é bastante complicada no Mac OS X, mas acho que você precisará criar um script personalizado.

    
por Ninsuo 16.04.2016 / 11:28
10

Eu não tenho reputação suficiente para comentar, mas ao invés de modificar nomes de arquivos, você pode usar globbing para fazer com que seu shell expanda nomes de arquivos

convert -resize 50% -delay 10 -loop 0 image_{0..99}.jpg output.gif
    
por shanksk 27.07.2017 / 20:52