web-dev-qa-db-fra.com

Comment redimensionner un gif sans se déformer et supprimer la région blanche lorsqu’elle est rognée?

Les dimensions ci-dessous sont 600 * 800. La hauteur est de 800 pixels, il y a donc beaucoup d'espace vide en bas que je souhaite supprimer.

source gif: old.gif

Cela a été enregistré sous le nom old.gif:

file old.gif 
old.gif: GIF image data, version 89a, 600 x 800

Redimensionné avec la commande convert:

convert old.gif -coalesce temp.gif
convert -size 600x800 temp.gif -resize 600x400! new.gif

signifie ignorer les proportions, ne les conservez pas.
Voici le résultat:

squashed gif

Le nouveau fichier new.gif est déformé.

Comment puis-je redimensionner le gif sans le déformer?

Mon essai avec l'argument -crop.

convert old.gif -crop 600x400+0+0 new.gif

cropped gif with whitespace

Comment supprimer la région vide dans new.gif?

La région blanche vierge est évidente dans Firefox. convert old.gif -crop 600x400+0+0 new.gif ne peut pas supprimer la zone blanche vierge dans new.gif.

gif in browser

L'utilisation de l'argument repage supprimera la région blanche vierge, mais rendra le gif plus flou.

convert old.gif -crop 600x400+0+0 -trim  +repage  new.gif    

blurry gif

1

Utilisez ! après la résolution donnée à -crop:

convert old.gif -crop 600x400+0+0\! new.gif

enter image description here

De les documents imagemagick :

A partir de la version 6.2.4-5 d'ImageMagick, vous pouvez ajouter un nouvel indicateur spécial à l'argument "-crop". Cet indicateur '!' indiquera à Rogner d'ajuster les informations du canevas virtuel de l'image renvoyée afin qu'elles soient relatives à la zone rognée.

...

Notez que la taille de la zone de travail de l'image renvoyée correspond maintenant à la zone dans laquelle l'image a été recadrée.

3
Olorin