well worth a look

Posted in Geek Stuff by dave on December 6, 2007 No Comments yet

(well, for photographers with sufficient intestinal fortitude for the command-line, at least)

For as long as I’ve owned my Canon 20D digital SLR, I’ve lived – for lack of a better term – patiently. The 20D produces fairly hefty files, with JPEGs weighing in around 3MB and RAW files at 7.8MB. Since I store all of our digital photos on our family server (in all its UPS-backed, 3-disk RAID-5 glory) this means that those photos must bounce around on network connections whenever we want to store or access them.

When I bought Kelly a Sony Cybershot pocket-camera for her birthday this year, I noticed something peculiar: Though the photos were nearly the same size on disk, the thumbnail icons for photos from Kelly’s camera loaded much faster over the network than those from my 20D. At first I ignored the difference in behavior as much as I could, but (as typically happens) my curiosity finally got the better of me.

I suspected that the difference had something to do with the fact that most digicams embed a thumbnail version of each image within the image file itself, to facilitate quick display while scrolling through the images in-camera. If the 20D’s embedded thumbnails were incompatible with my image browser (and Windows Explorer on Kelly’s laptop) then the thumbnails would need to be rendered from the full data of each image.

I set out in search of a program to manipulate the embedded thumbnails – and found JHead, a remarkable piece of software from woodworker/programmer Matthias Wandel. JHead is a command-line program that can manipulate all manner of EXIF data (that’s the header data that the cameras insert), including the EXIF thumbnails. It runs on Linux, OS-X and Windows, to boot! After a quick download, I was ready to give it a try.

Not wanting to mess up any family memories while testing out JHead, I copied a folder of 20D images to my laptop’s hard drive. A quick look from the Konqueror browser confirmed that about 2-3 seconds of waiting was necessary for each thumbnail image to be rendered. It takes even longer over the network, as the entire image must be downloaded to the browser and subsequently resized to thumbnail proportions.

Jumping over to the command line, I entered the folder of test images and ran JHead: ./jhead -rgt *.JPG

(The “-rgt” switch means “regenerate thumbnails”.) It took a few seconds to plow through the 40-or-so images, then greeted me with an obedient cursor. Flipping back over to Konqueror, I entered the folder of test images once again. This time, the thumbnails for every image in the folder loaded in the blink of an eye. Impressively, JHead had corrected whatever anomaly was preventing my browser from using the 20D’s internally-generated thumbnails.

After a little more testing of JHead in a “safe” environment, I’m eagerly anticipating turning it loose on our image collection. Given it has filtering capabilities to only act on images taken by certain makes/models of camera, it has the potential to be an ideal de-molassesiazation tool to target images from my 20D. And given our image archive is 32GB and growing, I’d say JHead has some serious work ahead!

Perhaps best of all, JHead is free and open-source software. Matthias is kind enough to give it away for the benefit of all who visit his corner of the web – and in doing so he provides a shining example of how well “open” really works. If you try JHead and like it, be sure to send him a thank-you … I know I will be!

Leave a Comment