Imagemagick convert resize then crop

Gor picture Gor · Sep 8, 2015 · Viewed 14.8k times · Source


I have over 1000 images on different resolutions, (for example 1234x2122, 4400x5212 , etc) and I want to convert all them to fixed 100x100 size, so.

  1. first I need to resize images keeping proportions, and get 100xA or Ax100, where A > 100 ( it depends width and height of image, for some images width > height, and for some images height > width ).

  2. Crop this image to 100x100 from center

Is there a simple convert command, that I can use for all my images ?

Answer

emcconville picture emcconville · Sep 8, 2015

You would use the area-fill (^) geometry modifier on the -resize operation to unify the down-scale. For cropping the center, -extent with -gravity Center will work.

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

Update

As Mark Setchell pointed out in the comments, the mogrify utility can be leveraged to batch convert items.

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

reminder Reminder: Mogrify will overwrite original file with resulting image(s), unless you set the -path parameter.