Creating montages with ImageMagick
When creating my Year in Pictures post I decided that I wanted a montage of all the photos I had taken. In previous years, I’ve done this by taking a screenshot in an application where I try to set the zoom level correctly to get something acceptable.
This time, I decided to do it properly and guessed that ImageMagick could help. After googling, I came up with this process:
- Export all images from Photos into a directory
- Rename based on date so that they are in order:
exiftool "-filename<DateTimeOriginal" -d "image-%Y%m%d-%H%M%S-%%f.%%e" *.jpeg
- Create montage with ImageMagick:
magick montage image*.jpeg -tile 21x -geometry 100x\> montage.jpg
The montage command takes the list of input images to use, then any options and then the name of the created image to create. The options I have used are:
- -tile 21x: This sets the number of images per row. You can also set the number of rows by adding a number after the x, such as -tile 4x5. I picked 21 as I have 365 photos that are of 3:2 ratio and I wanted a roughly 16:9 ratio output image.
- -geometry 100x\>: This resizes the width of the each image to 100 pixels with no padding. The x isn’t strictly needed, but reminds me that I’ve set the width (you set height with a preceding x, such as x100) and the < ensures that images smaller than specified width are not enlarged, again not strictly needed in this case. This is a very flexible option as you can see from the Image Geometry help section!
That’s it. I end up with the montage that I wanted! I also created a montage for this post with 20 pictures in a 5×4 grid using:
magick montage image*.jpeg -tile 5x -geometry 300x\> railway-montage.jpg