Criando uma animação GIF a partir de arquivos PNG

74

Existe uma ferramenta para criar uma animação gif de um conjunto de png arquivos?

Eu testei o comando convert do pacote ImageMagick , mas isso nem sempre é bem-sucedido. Além disso, tenho vários problemas com isso:

  1. não sei dizer qual é o progresso.
  2. Não importa o que eu tente, o -delay sinalizador não altera a taxa de quadros da animação gif.
  3. convert determina a ordem dos quadros com base na ordem alfabética dos nomes dos arquivos. Isso significa que name500.png será colocado logo após name50.png e não após name450.png Eu posso consertar isso adicionando 0's, mas isso é irritante.
por Yotam 05.11.2011 / 19:01

6 respostas

43

Newer versions of ffmpeg have no -sameq (see faq) but do have GIF support.

ffmpeg -i %03d.png output.gif

Where %03d is the frame ID in 3 digits.

Você também pode tentar usar ffmpeg para criar um filme a partir de uma sequência de imagens e depois converter o filme em uma animação GIF (novamente usando ffmpeg ).

# cf. http://pages.uoregon.edu/noeckel/MakeMovie.html

# first convert an image sequence to a movie
ffmpeg -sameq -i %03d.jpg output.mp4

# ... and then convert the movie to a GIF animation
ffmpeg -i output.mp4 -pix_fmt rgb24 -s qcif -loop_output 0 output.gif
    
por 07.11.2011 / 12:09
66

convert é uma ferramenta prática de linha de comando para fazer isso. cd para a pasta que contém seus arquivos png e execute este comando:

convert -delay 10 -loop 0 *.png animation.gif

Fonte: link

    
por 05.11.2011 / 20:32
18

A opção convert --delay aplica-se apenas à próxima imagem na linha de comando. Portanto, convert -delay 10 * só irá definir o atraso do primeiro quadro para 0,1 segundo. A opção precisa ser repetida:

convert $(for a in *; do printf -- "-delay 10 %s " $a; done; ) result.gif

Para sua necessidade de classificação, o convert não classifica frames, o shell globing * faz. Se você sabe que seus quadros são numerados de 0 a 700, você pode calcular os números sozinho:

convert $(for ((a=0; a<700; a++)); do printf -- "-delay 10 name%s.png " $a; done;) result.gif
    
por 02.12.2012 / 13:08
7

Atualização:

Use convert para o png-para-gif e use gifsicle para a animação. Não é uma solução One App To Do It All, mas com scripts, com certeza.

O GIMP pode criar gifs animados e fornece controle para temporização / atraso e repetição, etc

    
por 05.11.2011 / 20:21
2

O ImageMagick pode gerar uma animação gif de boa qualidade. Veja este vídeo - link

    
por 18.04.2013 / 22:03
0

Em relação ao ponto 2

A versão do "Display" do ImageMagick que tenho (ImageMagick 6.7.2-7 2017-01-12) ignora a taxa de quadros definida usando o comando convert para produzir o gif animado. Tente outro programa para ver o gif animado como o firefox.

    
por 24.09.2018 / 19:23