Inspired by this article, but lacking a key ingredient (Macintosh), I decided to see if I could do something similar in Windows or Linux. With three pieces of software, I found I could do something similar (and better, I think), but you can do something essentially identical with just one.
First off, get Perl. For non-techies, this may seem daunting. “Oh dear. I need to learn a programming language to do this?” No, you don’t. But the script that does all the hard work is written in perl. If you have Linux, you likely already have Perl. For Windows users, get ActiveState’s ActivePerl.
Next, you’ll need ImageMagick. There are versions for Windows and Linux. If all you want to do is make a poster that has uniformly laid out pictures, similar to the one created on the Mac, you need read no further. ImageMagick’s montage program does it all by itself. (in fact, you don’t even need Perl if you are just going to use montage). An excellent tutorial on doing this sort of thing is here. If, however, your images are of varying sizes and orientations, you’ll need more.
One note: when installing ImageMagick, be sure you do this after installing ActivePerl. Also, when the install program asks you to “Select Additional Tasks”, be sure “Install PerlMagick for ActiveState Perl” is checked. This is essential and easily missed.
The final thing you’ll need is a script to do the work. I really like Picture Tile. I imagine it will work with Linux (I haven’t actually tried it yet). However, it requires a couple of very small modifications to work with Windows. You can get my Windows specific version here.
Have Fun, Get Creative
Now that you have all the pieces, it is time to get creative. I decided I wanted to make a poster for each year that I have digital photos. So I made a new directory (I called it “2003 tile”) and copied all the really good photos to it.
Next, I had to decide how big a poster I wanted. The largest photos from places like Snapfish and Shutterfly are 20″x30″. I decided to go with a 24″x36″ size because that seems like a more likely poster frame size. I also found someone who will print these pretty darn cheaply. I have not yet had them print anything, but when I do, I’ll update this post.
So, now that I’ve decided to do this in 24″x36″, we need to convert that to pixels. Typically, 100 DPI is the barest of minimums for prints. I’ll go with 200 DPI. So I’ll want my final image to be 4800 x 7200.
Now, I needed to decide how much to scale my photos. I came up with about 50 shots, most around 1600×1200 pixels (from my 2MP camera). I started out with a guess of about 50%, and it is easy to play around with it.
Now we run the PictureTile script, and let it do the work. My command line went like this:
perl picturetile-win.pl –size 4800×7200 –margin 5 –border 100 –directory “2003 tile” –background white –scale .5 2003tile.jpg
Allow me to explain each command line option:
- –size 4800×7200 is the size of the resulting image.
- –margin 5 is the number of pixels in between the individual images. This can be negative if you want the images to overlap somewhat.
- –border 100 is the number of pixels around the outside of the final image. Since I am working at 200 DPI, this is a half inch border.
- –directory “2003 tile” is the location of all the files that are to go into my poster. I happened to put the 2003 tile directory as a sub directory of where I placed the picturetile-win.pl script.
- –background white is the overall background of the poster. I don’t know all the possibilities, but you can definitely use most common colors (yellow, blue, black, etc.)
- –scale .5 is how much to shrink (or grow) the individual pictures. 1 means don’t change their size, .5 is 50%, .1 is 10%, etc.
- 2003tile.jpg is the file that the result will be stored in.
One of the cool aspects of PictureTile is that the placement of the images is random, using a kind of Tetris effect to put them in place. Therefore, each time you run it, you’ll get a different resulting image. I ran it several times, and sometimes I would get all 50 photos in place, sometimes I would get only 48. Sometimes I liked the layout, sometimes I didn’t. I ran it 5 or 6 times before I got the one I liked.
As a final touch, I edited the poster in Paint Shop Pro, and added the year in one of the blank spaces.
I’ve played around with the PictureTile script, and was able to add a random picture rotation (very slight) so that the pictures would look like they had been placed there by hand. Now, if I could just get a drop shadow to work correctly, they could really look like photos tacked on a poster board.