Problèmes de transparence lors de la conversion de png en gif

0

J'utilise convert pour imagemagick pour convertir un ensemble de fichiers PNG en GIF. La commande que j'utilise est

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

J'aime les résultats, car la qualité visuelle baisse peu, mais un problème que j'ai rencontré est lorsque mes fichiers PNG ont des données transparentes: chaque image ne semble pas être une image séparée, mais vous pouvez voir où que ce soit qui était transparent. les données des images précédentes.

Ainsi, par exemple, si vous avez une balle qui roule de gauche à droite et que l’arrière-plan est transparent, vous verrez toutes les images précédentes où se trouvait la balle.

Comment puis-je gérer cela? J'aimerais que le GIF conserve la transparence si possible (sinon, faites-en une couleur prédéfinie), mais j'aimerais une animation correcte.

Ce gars parapluie
la source

Réponses:

3

Découvrez l' disposeoption d' ImageMagick pour définir le mode d'élimination (ou non) de l'image précédente avant que l'image suivante soit dessinée.

La méthode d'élimination des calques définit la manière dont chaque image affichée doit être modifiée après l'affichage de la dernière image d'une animation (après sa période de retard), mais avant la superposition de la prochaine image d'une animation. l'affichage.

   Undefined   0  No disposal specified (equivalent to 'none').
   None        1  Do not dispose, just overlay next frame image.
   Background  2  Clear the frame area with the background color.
   Previous    3  Clear to the image prior to this frames overlay.

Par défaut, je pense qu'il choisit "Undefined", ce qui équivaut à "Aucun", ce qui signifie qu'il ne dispose pas de la trame précédente.

Ƭᴇcʜιᴇ007
la source
Génial! Maintenant, les images précédentes n'apparaissent pas. Existe-t-il un moyen de le supprimer également afin que les bords ne soient pas trop irréguliers?
Ce parapluie Guy
Ma suggestion serait d’antialiser les images avant de créer le fichier GIF. Vraiment cependant, cela me semble être une toute nouvelle question. :)
cʜιᴇ007
Les cadres individuels sont anti-aliasés, donc je ne savais pas si cela avait quelque chose à voir avec le converti.
Ce parapluie Guy
Gardez simplement à l'esprit que les fichiers GIF (contrairement aux fichiers PNG) ne font pas de la transparence Alpha, c'est donc probablement de là que viennent les irrégularités. ( Voir ici )
cʜιᴇ007
1
Le format GIF comporte 256 couleurs indexées et la transparence une seule couleur indexée. Il est difficile de savoir si vos fichiers PNG sont en couleur 24 bits ou indexée. Le crénelage peut être un artefact de réduction de couleur ou le résultat de la conversion d'une couche alpha en niveaux de gris en une seule couleur. (commentaire ci-dessus ajouté pendant que je tapais)
horatio