Over the past few years I've amassed a collection of a few thousand images taken with a succession of digital cameras.
I'm pretty good at organising images, in a directory hierarchy which makes sense to me, in a few simple and broad categories:
skx@birthday:~$ tree -L 1 ~/Images/ /home/skx/Images/ |-- Misc |-- Parties |-- People |-- Pets & Animals `-- Travel
Beneath ~/Images/People, for example, I have subdirectories for specific individuals (or a "Debian/" folder for Debian-people who've been snapped but don't warrant their own folder.)
~/Images/Travel has things like Travel/Local/2010, Travel/Vienna/2008, etc.
In summary I have images of people, places, and things stored beneath what should be a reasonably discoverable directory hierarchy, however this just doesn't work. I still struggle to find images - for example images of myself might be located in ~/Images/People/Self/*, but in practise I'm often included in ~/Images/Travel/* as well.
A few times I've looked at using f-spot, digikam, and similar tools to perform image-organisation (but not editing, or timelines, or anything else. Just organisation). I've found I didn't like being locked into their formats, didn't want them to copy my images to a second location, and other gripes. In the end I've forced myself to come up with a Steve-Specific-Solution. Not for the first time, but I think I have just cause...
I'm now using the User-Comment field in the image's EXIF data to store tags. (When it comes to EXIF data I keep camera-generated fields, but sometimes update/set "Copyright", "Comment", and "Title" fields. So UserComment is one I've never used until now, and thus I run no risk of trashing existing meta-data.)
I've put together a simple perl script, called itag, which will:
- Index the tag information from all images beneath ~/Images into a DBM file.
- Show the filenames of all images matching a tag, or tags.
- Allow me to add tag(s) to an image (which both updates the EXIF data and updates the DBM "cache").
This is enough for me to be able to see all images of "Edinburgh", via:
~$ qiv --fullscreen --slide --delay 5 $(itag --search=edinburgh)
Similarly I could find myself:
~$ itag --search=steve --search=people
I'm not sure it is useful to others, mostly on the basis that people probably fall into their own routine when it comes to filing, and I suspect that people with vast collections of images will just get annoyed by the obscenely slow indexing process I've got. (Hint: run "exiftool" on every /.jpe?g$/i file..)
Still its a simple enough idea and I think it should scale in the future - I can even see myself writing a wee GUI to do tag exploration and similar. Just not today.
ObRandom: Apologies for people waiting on email - it's been that kind of week.