Square thumbnails with ImageMagick (convert)?

31,902

Solution 1

This is explained in the official ImageMagick documentation under, “Cut the Thumbnail to Fit”:

An alternative, is rather than pad out the image to fit the specific thumbnail size we want, is to instead cut off the parts of the image that does not fit the final size.

Of course this means you actually lose some parts of the original image, particularly the edges of the image, but the result is a enlarged thumbnail of the center part of the image. This is usually (but not always) the main subject of the image, so it is a practical method of thumbnail creation.

As of IM v6.3.8-3 the special resize option flag '^' was added to make this easier. We just resize using this flag then crop off the parts of the image that overflows the desired size.

And in the context of an example command:

convert -define jpeg:size=200x200 hatching_orig.jpg  -thumbnail 100x100^ \
          -gravity center -extent 100x100  cut_to_fit.gif

Solution 2

Ignacio linked to the correct documentation, however I'll paste it inline here for convenience:

convert -define jpeg:size=200x200 original.jpeg  -thumbnail 100x100^ -gravity center -extent 100x100  thumbnail.jpeg

Similarly, the following is for GraphicsMagick:

gm convert -size 200x200 original.jpeg -thumbnail 100x100^ -gravity center -extent 100x100 +profile "*" thumbnail.jpeg

Explanation:

  • -size 200x200 tells the jpeg decoder we only need this resolution so it can save memory and read the source image faster
  • -thumbnail 100x100^ fast resize making the shortest side 100
  • - gravity center center the next operation
  • -extent 100x100 apply the image to a 100x100 canvas
  • +profile "*" do not save any metainfo to the jpeg (making the resulting image smaller)

Solution 3

That is a simpler way to do it:

The following command resize the smaller side to 100 pixels and crop a 100x100 square. You can add a -strip command to reduce file size.

convert original.jpg -resize "100^>" -gravity center \ 
                     -crop 100x100+0+0 -strip thumbnail.jpg

Unlike others, it isn't trying to save memory. Instead, it does what you want, and no more. Plus, it won't upscale images.

Solution 4

I'm using graphicsmagick to generate precisely sized thumbnails but I'm padding the image with a checkerboard instead of cropping the overhang.

gm convert -limit Threads 1 -size 320x180 pattern:checkerboard -background transparent -gravity center -resize 320x180 -extent 320x180 original.jpg -flatten -resize 112x65! -interlace Line 1 thumb_112x65.jpg

Options explained.

gm convert

// Single threaded seems faster on smaller files
-limit Threads 1 

// Generate a checkerboard of size 320x180.
// Sets the relative size of the checkerboard squares,
// also sets the desired aspect ratio. In my case (16:9)
-size 320x180 pattern:checkerboard 

// Resize the input image and center it on a transparent layer.
-background transparent -gravity center -resize 320x180 -extent 320x180 orig.jpg

// Merge the layers
-flatten 

// Resize the output to the desired
// The ! causes the aspect ratio to be ignored, fixing any rounding errors.
// (Specify a size with the same aspect ratio as the checkerboard.)
-resize 112x65! 

// Use Progressive JPEG Encoding
-interlace Line 

// Output Image
thumb_112x65.jpg

Solution 5

This command crop to a square and then resize to 150x150

convert 824-full.jpg -set option:size '%[fx:min(w,h)]x%[fx:min(w,h)]' xc:none +swap -gravity center -composite -resize 150x150  temp.jpg

More options are availble here: http://www.imagemagick.org/Usage/thumbnails/#square

Share:
31,902

Related videos on Youtube

marioosh
Author by

marioosh

Updated on September 18, 2022

Comments

  • marioosh
    marioosh over 1 year

    How to create square/cropped thumbnail using ImageMagick ? Cropping like below.

    cropping

  • pconcepcion
    pconcepcion about 13 years
    @marioosh: I didn't understood, you can use convert -thumbnail 100x100+50+50 input_image.jpg output_image.jpg, for more info check Igancio Vazquez response for an example or check the documentation
  • Umut Benzer
    Umut Benzer over 12 years
    When I used it in command line (graphics magick one) I got picture on center, two siders are filled with white. Not the one described in question. Am I doing something wrong?
  • George Filippakos
    George Filippakos almost 11 years
    If you are using windows you must double the ^ character to escape it. Eg: -thumbnail 100x100^^
  • Jason Aller
    Jason Aller almost 10 years
    When adding a late answer to a question with established answers it is helpful to provide enough explanation why your answer offers something unique and new compared to the other answers.
  • Hello World
    Hello World over 9 years
    Why not size 100x100 ?
  • confused00
    confused00 over 7 years
    Thanks, I don't know why the others overcomplicated their answers to try to save memory when OP mentions nothing at all about this.
  • Ciro Santilli Путлер Капут 六四事
    Ciro Santilli Путлер Капут 六四事 over 7 years
    I love Ignacio's point blank answers :-)
  • saurabheights
    saurabheights over 7 years
    @HelloWorld: Read "Imagemagick Geometry". Google it, it will be easy find.