Thursday, May 17, 2007

Digital Photography with Linux

Argus During the summer of 1982, I borrowed a 35mm camera from my father and enrolled in a photography workshop; I took surprisingly decent photographs with that old Argus C3 and found that I very much enjoyed working in the darkroom as well. Still the oldest camera I own, the Argus has long been retired to my camera collection in favor newer models, most recently a Canon Digital Rebel XT. Today I am writing from the perspective of one fortunate enough to enjoy the intersection of two interests.

Linux is a great platform for digital photography with many great software tools, but in the interest of brevity I will only expound my own workflow. I use Canon digital cameras, so my “film” is a type II compact flash card; thanks to the Linux kernel’s strong USB support and some other Linux mojo (hal, udev), I simply plug in my card reader and an EOS_DIGITAL folder appears on my desktop while Gnome asks if I would like to import some photos. I click in the affirmative and it launches gThumb, a wonderful tool for importing images.

gThumb is billed as an image viewer, but what sets it apart from the image viewer crowd is its rich set of features for digital photos: my favorite is the ability to select all photos and have them automatically rotated to the proper orientation using the EXIF data stored in the image by the camera. gThumb even manages this without re-compressing JPEG images, meaning that there is no loss of quality whatsoever.

gThumb sports other useful features for photographers, but if I need to touch up any images I prefer to use the GIMP (Gnu Image Manipulation Program). The GIMP is the Open Source answer to Adobe’s Photoshop, and I feel surpasses the latter in every way. More often, I just want to resize and adjust the white balance of all the images I’m importing and using a GUI for such a task would be repetitive and boring: ImageMagick is a powerful set of image manipulation libraries whose interfaces include a Perl API and several command line utilities. Instead of the GUI, I simply type

mogrify -normalize -resize 800x800 *.jpg

The result will be a set of 800x533 or 533x800 (The Rebel has a 3:2 ratio) JPEG images with auto white balance applied. The images are now ready to be uploaded to my web photo gallery, but that’s a topic for another day. Many of my photographs are on display at