My Post-photographic Linux Workflow – Part 1

0 – Introduction

Because I switched from MacOS to Linux (Ubuntu) I also had to change my post-photographic workflow. This article is a revised version of my earlier articles with the adjustments that were required due to the OS switch and adopting DarkTable as my RAW processor.

In general most post-photographic workflows comprise of four general tasks performed after shooting:

  • Storing images on a hard drive;
  • Cataloging, organizing, or managing images;
  • Image processing and corrections; and
  • Exporting and distributing the images via slideshow, email, web galleries, or paper prints.

In these articles I outline my revised post-photographic workflow using DarkTable with a number of other utility, all Free Open Source Software (FOSS).

1 – Storing images on a hard drive

I use mostly 8 GB capacity SD cards with my cameras because they are cheap and serve as my master backups. I use each SD card to collect images from a number of days or a specific subject. It takes sometimes a week or so before I’ll decide to do an import. Here are the steps I follow:

1.1 – Copying images from SD-card to temporally folder on computer

My internal drive is only used for system files, applications and support files. All data is stored on three separate delegated document-type specific NAS (RAID1) drives. Because of it I have lots of spare room on my internal drive that allows me to copy all new image files into a separate folder for renaming before moving them into their final location on the delegated external picture NAS drive.

1.2 – Rename image file name

Today’s cameras do a lot, but they give the image files terribly boring names like IMG_01234.XYZ. This file name doesn’t tell me much. So what information do you include? What other considerations are there?

  • Each image should have a unique name.
  • Use the same image naming convention on all files.
  • Include the capture date and time.
  • Avoid using funky characters or spaces.
  • Don’t put too much information in the file name.

I could use DarkTable‘s import process to ingest and rename my images, however, I prefer to use a stand-alone application. This not only faster but also does not catalog the photos yet. The utility I use is called RenRot which will rename files according to their EXIF tags values. RenRot can also perform a lossless rotate, however this option is currently only for JPEG files.

To prevent incorrect associations, some explanation is needed here. The name of project is short form of “REName and ROTate” and no other interpretation will be used.

RenRot runs in batch mode in current or set with –work-directory directory as well as selective mode for separate files given as arguments in command line.

To install:

sudo apt install renrot
sudo apt install perl-doc

To use:

renrot –no-rotate -n “%Y%m%d-%H%M%S” *.XYZ
renrot –no-rotate -n “%Y%m%d-%H%M%S-%c” *.XYZ => add counter (used for bracketing)
renrot –no-rotate *.XYZ

Last option uses default setting as defined in the configuration file.

The above examples will rename the file name to YYYYMMDD-HHMMSS (Year, month, day, and hour, minutes and seconds in 24-hour format). In case there are multiple images taken at the same second, the program add a sequence number starting with “1” to the end.

Sometimes, after the renaming I find out that the time and/or date are wrong. Maybe I forgot to change the timezone, maybe not. Regardless I need to adjust the EXIF date/time related meta-data. This is where the exiftool utility comes in handy.

This example changes both date and time:

exiftool -AllDates=”2012:03:14 12:25:00″ *.XYZ

The example above just sets a particular value for the date and times of the pictures; if you wanted to just shift them all by a certain time index, such as the three years forward, you could use:

exiftool -AllDates+=”3:0:0 0″ *.XYZ

Make sure you use a plus or minus sign before the equals (as in -AllDates-= or -AllDates+=), depending on what you want to achieve when you assign your required time index, or the resulting EXIF data will not be as expected.

Exiftool will create a backup of the original before editing the EXIF data.

Last step is to rename the file to the adjusted date/time by running RenRot one more time.

1.3 – Copy renamed files onto external drive

Firstly, I use the Reference method to store my images on an external NAS (RAID1) drive. The folder structure starts with a root folder for each year named YYYY. Underneath is a sub-folder for each months labeled MM, which are further subdivided into folder for each day within the month, labeled DD. Sub-folders are only created for the days and months image files exist. Because of having started last year with Project 365, year 2015 has images for each day. The same will be true for pictures taken this year, 2016.

2 – Cataloging, organizing, or managing images

Photo organization is one of those things that comes down to best practices because there are lots of different needs and every person seems to have a variation that seems most correct to them (perfectly valid). With that being said my overall goal was to have a system that required as few levels of folder structure as possible to fully sort as many of my photographs as possible. The last thing I wanted was to have to drill down through 4 (or 6… or 8(!)) folders in order actually get to my photographs.

2.1 – Import new images into DarkTable

The basic element for organizing images in DarkTable is called a film roll – a kind of virtual folder. Whenever you import images from disk, the images are organized in a film roll whose name is derived from the name of the disk folder. Re-importing a disk folder will add any new images to the existing film roll; images already present in the film roll are not touched.

It is important to note that importing images in DarkTable does not involve a physical copy step. Importing a folder into DarkTable is therefore not a backup operation of that folder.

In my case, I create separate root folder for each year. Within each root folder I create a sub-folder for each month and a further sub-folder for each day. Because I the Reference method to store my master images outside on an external drive, I use the import Folder option to be added to the relevant day folder as a film roll to DarkTable.

Note: By adding metadata and keywords to the photos, I have also a dynamic way to search my photographic library to find what I am looking for quickly and with little effort. More on that in section 3.4.

2.2 – Optional, creating collections within Day film roll

DarkTable offers a versatile feature to organize your images according to various user defined selection criteria. A set of images which is defined by a specific combination of selection criteria is called a collection. The most basic kind of collection is a film roll – covering all the images which have been imported from a specific folder on disk.

I can easily construct other kinds of collections based on various image attributes like EXIF data, filename, tags etc. Multiple criteria can be logically combined to narrow or extend a collection. DarkTable keeps a list of the most recently used collections for quick access.

If for a specific day I have photos that are fore more then one subject area, I create separate collections that are tagged with the subject name.

Both film rolls and collections are virtual containers – I chooses what goes in them. More about that in sections 3.4 and 3.5.

This is it for this part. Stay tuned for part 2, in which I will detail the remaining two steps of my workflow for image processing and correction and exporting and distributing the images.