web-dev-qa-db-fra.com

Comment rogner un gif animé avec ImageMagick?

Il existe de nombreuses informations sur le recadrage des images, mais la tentative de rognage (ou de rognage) des animations produit des résultats étranges. Parfois, ils scintillent ou viennent avec des images supplémentaires, ou certaines images sont rognées correctement et d'autres deviennent décalées. Comment puis-je empêcher tout cela d'arriver?

54
jimmetry
convert input.gif -coalesce -repage 0x0 -crop WxH+X+Y +repage output.gif
  • Les gifs animés sont souvent optimisés pour économiser de l'espace, mais imagemagick ne semble pas en tenir compte lors de l'application de la commande de recadrage et traite chaque image individuellement. -coalesce reconstruit les images complètes.
  • D'autres commandes prendront en compte les informations de décalage fournies dans le gif d'origine. Vous devez donc forcer la réinitialisation avec -repage 0x0.
  • Le recadrage est simple: largeur, hauteur, décalage x et décalage y sont respectivement fournis. Par exemple, un recadrage de 40 cm de large et 30 cm de haut à un offset x de 50 = 40x30 + 50 + 0.
  • Le recadrage ne supprime pas la toile qu'il a extraite de l'image. Appliquez +repage après le recadrage.
73
jimmetry

Même avec la fusion et le rapage, je ne pouvais pas obtenir ImageMagick pour recadrer et redimensionner très bien les gifs animés.

J'ai trouvé un programme appelé Gifsicle et il fonctionne très bien pour manipuler des gifs animés.

gifsicle --crop 0,0-100,100 --output out.gif in.gif

Il peut également faire toutes sortes d’opérations. Vérifiez-le!

33
fletchowns

Les animations sont souvent optimisées, ce qui signifie que certaines images sont plus petites que d’autres. Ainsi, dans ImageMagick, vous souhaiterez probablement fusionner l’animation avant de la rogner.

convert in_animation.gif -coalesce -crop WxH+X+Y +repage -layers optimize out_animation.gif


Vous devrez peut-être ajouter une méthode -dispose avant de lire l'animation d'entrée pour éviter tout scintillement. Définissez également les options -delay et -loop à la fin, si vous souhaitez apporter des modifications.

Voir

http://www.imagemagick.org/Usage/anim_basics/#disposehttp://www.imagemagick.org/Usage/anim_basics/#coalescehttp: //www.imagemagick.org/script/command-line-options.php#layers

0
fmw42

La ligne suivante a fonctionné avec moi sur Mac

convert -dispose 2 input.gif -trim -layers TrimBounds animation.gif

Voici la source

0
kernel