web-dev-qa-db-fra.com

Imagemagick convertit le recadrage et redimensionne


J'ai plus de 1000 images dans différentes résolutions (par exemple 1234x2122, 4400x5212, etc.) et je veux les convertir toutes en format 100x100 fixe.

  1. je dois d'abord redimensionner les images en conservant les proportions, et obtenir 100xA ou Ax100, où A> 100 (cela dépend de la largeur et de la hauteur de l'image, pour certaines images largeur> hauteur et pour certaines images hauteur> largeur).

  2. Recadrer cette image à 100x100 du centre

Existe-t-il une simple commande de conversion que je peux utiliser pour toutes mes images?

28
Gor

Vous utiliseriez area-fill (^) modificateur de géométrie sur le -resize opération pour unifier l'échelle descendante. Pour recadrer le centre, -extent avec -gravity Center fonctionnera.

convert input.jpg -resize 100x100^ \
                  -gravity Center  \
                  -extent 100x100  \
        output.jpg

Mise à jour

Comme Mark Setchell l'a souligné dans les commentaires, l'utilitaire mogrify peut être utilisé pour convertir des éléments par lots.

mogrify -path ./path/to/write/results/ \
        -resize 100x100^ \
        -gravity Center  \
        -extent 100x100  \
        ./path/to/source/files/*

reminder  Rappel: Mogrify écrasera le fichier d'origine avec les images résultantes, sauf si vous définissez le -path paramètre.

38
emcconville