Sunday, 23 September 2012

Editing photograph metadata

A much neglected task for any photographer is labelling one's photographs. In the old days one could write on the back of a print, but as I always preferred slide film this wasn't an option. So I created a database in which I stored a simple title and description of each slide. However, as it would often take me many months to finish a film it was sometimes unclear when and where any particular picture was taken. So I've finished up with too many slides labelled "somewhere in France".

In this age of electronic photography everything should be so much easier. There are standardised ways of storing information about the image in the image file itself. This so-called metadata is then permanently attached to the photograph. It doesn't fade or get lost when a database crashes. What's more, online services such as Flickr can use this metadata to label photographs when you upload them, saving you the trouble of writing it all again. And with photos being loaded into a computer within hours of taking them there's no excuse for forgetting any details.

On my Windows XP computer I have an easy to use metadata editing program called Microsoft Pro Photo Tools. Surprisingly Microsoft seem to have discontinued it, as there is no Windows 7 version.

The screenshot shows the key features. I load a group of images, typically one day's photos, whose thumbnails are displayed in the lower half of the GUI. After selecting one or more of the images I type metadata into the boxes in the upper half. Switching to the "map browse" tab I can drag and drop images to a map to set their location data. This really is a simple to use program that should have been more heavily promoted.

Since choosing Linux as the operating system for my main computer I've been looking for a suitable photo metadata editing program. None that I've tried has the required features. For example, some only allow you to label one picture at a time and others have a very cluttered interface that has too much technical detail. So I've decided to write my own.

As you can see, I've borrowed some of the look and feel from Photo Tools. I'm writing the software in Python, as that's what I know, and I'm using PyQt to create the GUI. Python has a very good library to read and write metadata called pyexiv2. My program is still at a very early stage of development but I'm very pleased with how it's coming along. I've even managed to load Google maps into the GUI.

My only difficulty has been in getting my head round the multiplicity of metadata standards - EXIF, IPTC and XMP. Some data, such as title or copyright info, can be stored in all three. I've decided to try and make my program follow Postel's law so it will read data from any standard and write to all three. This should maximise its compatibility with other programs.

Needless to say, when it becomes usable I'll be making it available as open source. Watch this space.

Edit 2012/09/26: early version is now available from github: