Estoy usando ImageMagick para convertir una colección de pngs en un solo gif. Quiero que este gif se repita lo más rápido posible.
Este es aproximadamente el resultado que espero (cortesía de Wikipedia ):
Esta es la salida que realmente obtengo:
En mi navegador (Firefox 17), el gif esperado se ejecuta más del doble de rápido que el gif real. Esto me sorprende, porque especifiqué que cada cuadro debería tener un retraso de 0.
Primero creé 36 pngs explotando el gif prestado de Wikipedia:
--caution: command generates 36 pngs
convert.exe newton.gif newton_%d.png
Luego solía coalesce
recombinar los png en un gif.
convert.exe -dispose none -delay 0 newton_%d.png[0-35] -coalesce output.gif
identify
confirma que cada cuadro no tiene retraso:
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,
Esto es, de hecho, menos retraso que el 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,
El gif real tiene menos retraso que el gif esperado. Entonces, ¿por qué el gif esperado es dos veces más rápido que el gif real?
fuente
-delay 2
.Respuestas:
Experimenté y creé la versión de 10 ms (retraso = 1).
Parece que los programas que procesan gifs tienden a no respetar las tasas de retraso de centésimas de segundo. En cambio, usan un valor que es mucho mayor que el valor pequeño que usted eligió.
Realmente no puedo comentar sobre las razones por las que hacen esto. Me he encontrado con más de una razón, y es posible que todo sea especulación.
En general, recomendaría que utilice un retraso de al menos doscientos de segundo en todos los casos.
Fuentes (que demuestran cómo parece haber múltiples razones para esto. Algunas son relativamente antiguas):
fuente
Parece que @DavidMah tiene razón. En mi sistema Linux, el retraso mínimo es 0.5:
Por alguna razón, las imágenes parecen no mostrarse correctamente en mi navegador. Usando un visor de imágenes local (
eom
), la primera imagen es tan lenta como la de la pregunta original y las otras dos son más rápidas que las de la wikipedia. Estoy publicando de todos modos en caso de que sea un problema específico de mi navegador. En cualquier caso, debería obtener mejores velocidades si intenta los comandos publicados anteriormente.ACTUALIZACIÓN: Parece que hay 2 problemas. Los navegadores (al menos y firefox y chromium que se ejecutan en Linux) no pueden mostrar gifs creados con un retraso <1.5. 1.5 funciona bien, 1.4 es lento. Mi visor de imágenes puede manejar retrasos de 0.5 y superiores. Intente descargar una de las imágenes anteriores y ábrala en su visor de imágenes favorito. Además, eche un vistazo a estos:
ACTUALIZACIÓN2: @DavidMah señala en los comentarios a continuación que los valores decimales se redondean al entero más cercano. Entonces, 1.4 se redondea a 1, que es demasiado lento, mientras que 1.5 se redondea a 2, lo cual está bien.
fuente
He tenido más éxito al usar la
XxY
notación de retraso, esencialmentex
es como un/
, así que si especificas-delay 1x20
, el marco se muestra durante 1/20 de segundo.fuente