J'ai un gif animé que je veux boucler n fois (animation.gif). Après la boucle, je souhaite afficher une image statique (static.gif). L'animation sera affichée sur le Web, la taille du fichier doit donc être la plus petite possible.

J'ai essayé de l'implémenter avec Imagemagick en ajoutant l'image statique avec un délai nul ...

convert -loop 3 animated.gif -delay 0 static.gif newanim.gif

Bien que l'image statique soit affichée à la fin, le problème est qu'après chaque itération, static.gif s'affiche pendant une fraction de seconde.

Une autre chose que j'ai essayée était d'ajouter l'animation 3 fois et l'image statique à la fin. Cela fonctionne parfaitement mais le fichier devient trop volumineux surtout si l'animation est longue et si elle est répétée plusieurs fois. Par exemple, une animation de 6,1 Mo devient ~ 18 Mo.

convert -loop 1 animated.gif animated.gif animated.gif static.gif newanim.gif

J'utilise Python dans un environnement Linux pour implémenter cela, donc s'il existe des moyens programmatiques de le faire au lieu d'Imagemagick, cela fonctionnerait également.

EDIT : je n'ai pas mentionné une contrainte: il doit fonctionner sans aucune programmation côté client (Javascript, CSS, etc.). Il doit s'agir d'une solution purement gif. Cette contrainte le différencie de Comment arrêter la boucle d'un gif animé

3
Paul 21 juil. 2015 à 17:55

2 réponses

Meilleure réponse

Non, tu ne peux pas. Le format GIF anim ne fournit pas cette capacité.

Il existe différentes manières de faire ce que vous voulez sur une page Web, mais vous aurez besoin d'un fichier séparé pour l'image statique, et vous aurez besoin d'un peu de code (par exemple, JavaScript, ou peut-être CSS) pour afficher l'image statique après le nombre souhaité de boucles animées.

5
PM 2Ring 21 juil. 2015 à 15:23

Je suis sûr que votre problème avec la taille gif résultante réside dans les outils que vous utilisez. J'ai créé ces échantillons, un avec une animation et un autre avec une animation répétée 2 fois et j'ai la même taille pour les deux. Vérifiez-le vous-même:

single loop two loops

J'ai utilisé ScreenToGif, il est super bogué et ne fonctionne que sur Windows mais fait son travail et peut ouvrir un gif existant ou une liste d'images à éditer.

Si vous avez besoin d'une solution pour Linux, jetez un œil à FFmpeg, mais je ne l'ai pas utilisé moi-même.

0
Pang 2 déc. 2017 à 01:14