Photo management workflow on Debian GNU/Linux

Ah, never mind, I don't want to ruin the surprise.

2013-04-14    »   debian, photography, software

I’ll cover the tools and processes I use in managing my photo collection - using only free software.


Software tools in use

This page may well be of some interest even if you’re using a subset of, or different set to, this collection:

  • Debian GNU/Linux, unstable branch, running KDE 4.8+
  • konsole - much goes on in here, natch - it’s just faster than using a file manager
  • Geeqie - rotating, comparison, triage, quick quality and size changes
  • LightZone - great for doing quick image improvements
  • Luminance HDR - a fantastic HDR / tone-mapping app (used to be called qtpfsgui)
  • GIMP (of course!) - superb for anything beyond LightZone’s abilities
  • Hugin - for creating panoramas
  • KPhotoAlbum - tagging and indexing
  • Unison-gtk - syncing / backing up the picture repository between machines
  • The inevitable handful of bash scripts for various tidying tasks

The file-system structure and the collaborative process

The file system layout I’m using has grown over the years, and I’d probably do it slightly differently if I was starting from scratch again now.

My setup is a tad complicated by the fact that three people share the photo collection, which is now around 75,000 files, and 350GB.

The upside of this sharing is that we all have access to a full copy, of course, but more importantly we each have two backup copies out there. Obviously there’s some logistical costs to keeping these copies in sync.

The directory structure we use looks like this:


The whole ./pictures/ directory is kept in sync. I’ve shown just a couple of folders here, but between us there’s 12 directories now reflecting the different cameras, including phones, that we have, or have had over the years. The index.xml file is what KPhotoAlbum stores all its information in - and it keeps a configurable number of zip’d archives in the same directory.

This structure keeps our work somewhat isolated, which makes for less troublesome sync activities. It also makes finding files directly (outside of the tagging provided by KPhotoAlbum) a bit easier too. In some cases the yyyymmdd directory names include a descriptive suffix (dash or underscore separated) where it’s appropriate and useful.

Workflow summary

My Olympus E-620 is recognised as a USB drive, so files are copied into a new directory at Jedd-e620/yyyy/yyyymmdd-unsorted/ using konqueror.

Using a konsole I’ll create other subdirs, and shuffle the files into them, if I’m pulling in photos taken over more than one day.

If I’m feeling paranoid, I’ll run a unison sync process to get a backup on both my, and my other half’s, laptops immediately.

Using geeqie I’ll do a few easy things. First, I’ll do a quick run-through to re-orientate the photos consistently. Then I’ll cull the obviously useless images, shrink ones where I just need the text (signs etc), similarly ditching bracketed images where I only need one, then do a side-by-side comparison of similar pics or sets of pics and delete the losers.

If I spot some images that I anticipate wanting to turn into HDR / tonemapped or to join together in a panorama or just do some post-processing work on, then I’ll copy them into ./panoramas/ and ./modified/ directories.

Depending on how I’m feeling, and the size of the new set I’m processing at the time, I’ll either make a note to come back to these later, or I’ll crank up Luminance HDR, or hugin, or gimp / lightzone and process them straight away.

Then I’ll run some bash scripts – to set FocalLength EXIF data for shots taken with manual lenses, set the file timestamps to match the EXIF timestamps, bump up modified & panorama EXIF time stamps to be a few seconds advanced of the youngest constituent image (this means they sort sanely later in KPhotoAlbum).

Finally I’ll run KPhotoAlbum and tag the Places, People and Keywords for the images – this is typically the most time-consuming part of the process, but it pays off in spades down the road.



And now in detail …

Coming (in painful detail, rest assured) shortly.