J'utilise ImageMagick pour transformer une collection de pngs en un seul gif. Je veux que ce gif boucle le plus rapidement possible.
C'est approximativement le résultat que j'attends (avec l'aimable autorisation de Wikipedia ):
Voici la sortie que j'obtiens réellement:
Sur mon navigateur (Firefox 17), le gif attendu s'exécute plus de deux fois plus vite que le gif réel. Cela me surprend, car j'ai spécifié que chaque trame devrait avoir 0 retard.
J'ai d'abord créé 36 pngs en faisant exploser le gif emprunté à Wikipedia:
--caution: command generates 36 pngs
convert.exe newton.gif newton_%d.png
Ensuite, j'avais l'habitude coalesce
de recombiner les pngs en un gif.
convert.exe -dispose none -delay 0 newton_%d.png[0-35] -coalesce output.gif
identify
confirme que chaque trame n'a pas de retard:
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,
C'est, en fait, moins de retard que l'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,
Le gif réel a moins de retard que le gif attendu. Alors pourquoi le gif attendu est-il deux fois plus rapide que le gif réel?
la source
-delay 2
.Réponses:
J'ai expérimenté et créé la version 10 ms (délai = 1).
Il semble que les programmes qui rendent des gifs tendent à ne pas respecter les taux de retard de 0 centième de seconde. Au lieu de cela, ils utilisent une valeur bien supérieure à la petite valeur que vous avez choisie.
Je ne peux pas vraiment commenter les raisons pour lesquelles ils font cela. J'ai rencontré plus d'une raison, et il est possible que toutes ses spéculations.
En général, je vous recommande d'utiliser un délai d'au moins deux cents de seconde dans tous les cas.
Sources (qui démontrent qu'il semble y avoir plusieurs raisons à cela. Certaines sont relativement anciennes):
la source
Il semble que @DavidMah ait raison. Sur mon système Linux, le délai minimum est de 0,5:
Pour une raison quelconque, les images ne semblent pas s'afficher correctement dans mon navigateur. En utilisant une visionneuse d'image locale (
eom
), la 1ère image est aussi lente que celle de la question d'origine et les deux autres sont plus rapides que celles de Wikipédia. Je poste quand même en cas de problème spécifique à mon navigateur. Dans tous les cas, vous devriez obtenir de meilleures vitesses si vous essayez les commandes publiées ci-dessus.MISE À JOUR: Il semble y avoir 2 problèmes. Les navigateurs (au moins y firefox et chrome fonctionnant sous Linux) ne peuvent pas afficher les gifs créés avec un délai <1,5. 1.5 fonctionne bien, 1.4 est lent. Ma visionneuse d'images peut gérer des retards de 0,5 et plus. Essayez de télécharger l'une des images ci-dessus et de l'ouvrir dans votre visionneuse d'images préférée. Jetez également un œil à ces derniers:
UPDATE2: @DavidMah souligne dans les commentaires ci-dessous que les valeurs décimales sont arrondies à l'entier le plus proche. Donc, 1,4 est arrondi à 1, ce qui est trop lent tandis que 1,5 est arrondi à 2, ce qui est OK.
la source
J'ai eu plus de succès en utilisant la
XxY
notation de retard, essentiellementx
c'est comme un/
, donc si vous spécifiez-delay 1x20
, le cadre est affiché pendant 1 / 20e de seconde.la source