Contact Sheets

A Contact Sheet is a sheet of photographic paper displaying small-scale versions of photographic images for quick review.

Image courtesy of Wikipedia

If, like me, you've built up a big archive of digital photographs (perhaps on a network drive/server), you may find it useful to have contact sheets for each folder, something like the above.

This command-line program starts in a specified folder and searches for photos within that folder and all subfolders (and so on, recursively down through the tree of folders). It generates a contact sheet for each folder and saves some information about the photos it has seen, so that it can skip folders which have not changed the next time that you run it. Each sheet is stamped with the time & date, plus the location of the folder. The small images are each 230 pixels in width (and are vertically scaled in proportion) and each has the image filename displayed below it.

I've used 'cron' on my server to schedule this program to run every hour. It automatically recognizes which folders have changed and regenerates the associated contact sheet accordingly.

You will need Java 5 (also called 1.5) or above to run this program. If you see a dancing cartoon figure on this page, you have Java. If you need to download Java first, you can get it from here.

Click to download ContactSheets.jar (7KB).
  • Right-click the link & choose 'Save As' (or 'Save Target As', or 'Save Link As').
  • Choose a folder somewhere to save the file.

Contact Sheets is a command-line program, which means you will need to open a terminal or command window (how you do this depends on whether you have a Mac, Windows or Linux). (for Windows, try 'Start', 'Run', type 'cmd' and press Enter.)

To run Contact Sheets, 'cd' into the folder/directory where you saved the above file, and type:
java -Xmx256m -jar ContactSheets.jar /path/to/my/folder
(replacing /path/to/my/folder with the path to the folder where you wish the program to begin searching)

Note: The "-Xmx256m" allows Contact Sheets to use up to 256MB of memory. In practice it should use much less than this, but it's useful to specify the limit in case it finds a single directory containing a large number of photos. Should the program crash with a Java OutOfMemoryException, you could increase this number to try giving it more memory to work with (e.g. "-Xmx512m").

You may find it useful to create a script or batch file containing these commands - but how you do this is up to you.