Estou usando o ImageMagick para transformar uma coleção de pngs em um único gif. Quero que esse gif faça um loop o mais rápido possível.
Esta é aproximadamente a saída que eu espero (cortesia da Wikipedia ):
Esta é a saída que realmente recebo:
No meu navegador (Firefox 17), o gif esperado é executado duas vezes mais rápido que o gif real. Isso me surpreende, porque especifiquei que cada quadro deveria ter 0 atraso.
Primeiro, criei 36 pngs explodindo o gif emprestado da Wikipedia:
--caution: command generates 36 pngs
convert.exe newton.gif newton_%d.png
Então eu coalesce
recombinava os pngs em um gif.
convert.exe -dispose none -delay 0 newton_%d.png[0-35] -coalesce output.gif
identify
confirma que cada quadro não tem atraso:
identify.exe -format "%T, " output.gif
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
Isso é, de fato, menos atraso que o original:
identify.exe -format "%T, " newton.gif
5, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 5, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2,
O gif real tem menos atraso que o gif esperado. Então, por que o gif esperado é duas vezes mais rápido que o gif real?
imagemagick
gif
Kevin
fonte
fonte
-delay 2
.Respostas:
Eu experimentei e criei a versão 10ms (delay = 1).
Parece que os programas que renderizam gifs tendem a não respeitar as taxas de atraso de 0 centésimos de segundo. Em vez disso, eles usam um valor muito maior que o pequeno valor que você escolheu.
Eu realmente não posso comentar sobre as razões pelas quais eles fazem isso. Eu me deparei com mais de uma razão, e é possível que seja tudo especulação.
Em geral, eu recomendaria que você use um atraso de pelo menos duas centenas de segundo em todos os casos.
Fontes (que demonstram como parece haver várias razões para isso. Algumas são relativamente antigas):
fonte
Parece que @DavidMah está certo. No meu sistema Linux, o atraso mínimo é 0,5:
Por algum motivo, as imagens parecem não ser exibidas corretamente no meu navegador. Usando um visualizador de imagens local (
eom
), a 1ª imagem é tão lenta quanto a da pergunta original e as outras duas são mais rápidas que as da Wikipedia. Estou postando assim mesmo, caso seja um problema específico do meu navegador. Em qualquer caso, você deve obter velocidades melhores se tentar os comandos postados acima.ATUALIZAÇÃO: Parece haver 2 problemas. Navegadores (pelo menos y Firefox e Chromium em execução no Linux) não podem exibir gifs criados com um atraso <1.5. 1,5 funciona bem, 1,4 é lento. Meu visualizador de imagens pode lidar com atrasos de 0,5 e acima. Tente baixar uma das imagens acima e abri-la no seu visualizador de imagens favorito. Além disso, dê uma olhada neles:
UPDATE2: @DavidMah aponta nos comentários abaixo que os valores decimais são arredondados para o número inteiro mais próximo. Portanto, 1,4 é arredondado para 1, que é muito lento, enquanto 1,5 é arredondado para 2, o que é OK.
fonte
Eu tive mais sucesso usando a
XxY
notação de atraso, essencialmente ax
é como a/
, portanto, se você especificar-delay 1x20
, o quadro será exibido por 1/20 de segundo.fonte