Proof Sheet / Contact Sheet / Index for Digital Photos

designed for Sony DSC-S70, DSC-F717 and Minolta Xg cameras, probably works for others

click here for a sample proof sheet
Update: My wife recently got a Minolta Xg, a lovely small camera that goes a lot more places than my F717. I've tweeked these scripts to work with the QuickTime(tm) MOV files that it generates for video clips, and also switched to using mplayer to pull out the first frame.

I store all my digital photos in directories named by the date I copied them from the camera, and I now find I need something like the 'proof sheets' I made when I did 35mm B&W photography.

Originally I only intended to print these out and store them with the CDs, however I've added enough to the html pages that it is useful to keep them as indexes with each directory.

The EXIF data embedded in each JPEG from the camera contains not only timestamp and exposure information for each image, but also a 'thumbnail' version of the photograph. These are much faster to extract and display than resizing each image with e.g. ImageMagick, so that's part of what this code does.

The code relies on having the directory structure as these two cameras create it on the memory stick. Specifically, that's something like:

/dcim
  /101msdcf  (or more directories if created for the F717)
     /*.jpg
The S70 also has an mssony directory at the same level as dcim for MPEGs, this code handles that too. It will also handle multiple image folders as the F717 can create.

This software is written to run under Linux. You can probably make it work under Windows using Active Perl and Windows versions of the required software, but I haven't done that.

Additional Required Software:
ImageMagick (convert) http://www.imagemagick.org/
jhead http://www.sentex.net/~mwandel/jhead/ [local copy]
mpeg2decode http://www.mpeg.org/MSSG/ [local copy]
Image::Info CPAN module http://www.cpan.org/modules/index.html [local copy]
mplayer http://www.mplayerhq.hu/
transcode http://zebra.fh-weingarten.de/~transcode/ (only needed for converting the Xg's QuickTime(tm) MOV files)

What it does:
proof.pl is a perl script to produce an html page with thumbnail images of the digital photos in a directory directly copied from a Sony camera as described above. A thumbnail image for the first frame of each MPEG file is also produced, and information for each file is presented below the thumbnail image. For JPEGs this information is the file name, exposure date and resolution; for MPEGs the file name, duration and resolution are displayed. Clicking on a thumbnail will load the .jpg or .mpg file directly to your browser. This page can be printed out to store with your CDs or other media, and I also keep the webpage and thumbnails with the directory as an index for future use.

proof-all.pl calls proof.pl for each subdirectory in the current (or specified) directory and generates a top-level index.html file with links to the proof sheet (.html file) in each subdirectory and a count of JPEGs and MPEGs contained there.

Here is a sample produced by proof-all.pl with only a single subdirectory. Note that the full size images are not included, as I have only a dial-up connection to my web host.

Installation: Get the software listed above, install it in /usr/local/bin. If you put them anywhere else, edit my perl scripts to reflect the correct paths (where it says "change these...").

Use: I just cd to a directory containing subdirectories as copied over from a MemoryStick(tm) and run proof-all.pl. This will produce an index.html file; point your web browser at it.


rob miller -- rob at janerob dot com
This page has been accessed times since 09 August 2003.
Last modified: Mon Sep 22 00:32:43 WAT 2003