Photo Workflow

For several months now, I’ve been trying to refine and improve my workflow for dealing with photos. It still isn’t perfect, but it’s a far sight better than sticking old pictures in some random place and forgetting about them.


Import
The first step of my process is importing photos from whatever camera they originated. Whether it’s my DSLR, GoPro, or phone, I have a folder on the SD card that stays in my Surface for photo imports. This is the sort of master version that I keep until the photos reach the end of the process. After I pull the photos off of the source, I can delete the true original files. That way, I free up space for the camera to take more pictures, but I also reduce the risk that I’ll pick the camera up in a few months and have photos on there that I forgot all about.


The photos in this import folder serve as the sort of raw starting point, and all the future steps are copied, not moved. If I jack up some step in my workflow, I can always go back to these files and know that any original naming or metadata is still intact. It may take time and effort to start over, but at least I know that I *can* start over. Soon after I first started using digiKam, I accidentally wiped out the timestamp for an entire album of photos that we paid a professional to take. Unfortunately, I had already deleted the originals. Fortunately, the photographer still had the photos in her system, and she was kind enough to send us a cd of them. Thanks, Alexis. I learned my lesson.

Save File Name
From the import pool, I COPY the photos to a new folder where I work on them in ExifTool. This is a free command line utility for editing metadata, and it’s amazing. The forums are also great for troubleshooting, and the creator Phil Harvey is very active on them. Getting information straight from the man who wrote the tool is the best.
Use this command to save file name as description:
---
exiftool "-iptc:caption-abstract<filename" "-comment<filename" "-XMP-dc:Description<filename" "-IFD0:ImageDescription<filename" -r -overwrite_original -progress D:\jakeh\Pictures\2_Save_Name
---


Use this command to add to timestamp when digikam cannot:
---
exiftool "-AllDates+=13" -verbose -r -overwrite_original -progress D:\jakeh\Pictures\3_Fix_Date
---


use this command to set date to a specific day
---
exiftool -AllDates="2020:12:25 13:00:00" -verbose -r -overwrite_original -progress D:\jakeh\Pictures\3_Fix_Date 
---

The first thing that I do with ExifTool is save the original file name to multiple caption and description fields. A lot of people keep the original file name, but I would rather the file itself be called something more intelligible than “D003402” or something like that. However, I do still like to have that original file name available in a searchable field.


Why do I want the file name saved? Part of my method of finding old photos involves Google Photos. I upload the photos there, and Google does a great job of automatically applying labels and such to let me find photos later. I can search for a place, a person’s name, or text that appears in the photo, and Google can usually find what I’m looking for. Then, I check the metadata on that file, and I can search my local photo library for the original name. That gives me the original photo resolution, combined with the powerful search features of Google Photos. It’s a little cumbersome, but it gives me exactly what I need.

Migrate to digiKam
After I save the original file name to the description, I copy the photos (NOT MOVE) to the external hard drive where my digiKam database exists. I keep digiKam on an external, so that I can take the photos anywhere without bringing my computer along. Plus, I can backup the full database to another drive. If the main external hard drive that I use were to ever crash, it should be as simple as buying another drive, copying the digiKam backup to it, and pointing the local installation on my laptop at it. In theory, that is. I haven’t tested it, and I hope that I don’t have to.

Within my digiKam database, I have an “import” folder that all photos go to. Again, this acts as sort of a snapshot that I can return to if necessary. Typically, I work on photos within that import folder, but I keep the photos where I copied them from as well. If digiKam does anything funky, or I overwrite something that I can’t reverse, I can start over. I clear out that import folder in digiKam, close the software, copy the previous versions over, and start the software again.

Verify Timestamp
From the digiKam import folder, I check the timestamp on my photos. Typically, photos that I took have a good timestamp because I make a point to update the clock on my cameras. However, not all of my photos have a good timestamp. Fortunately, digiKam is pretty powerful in dealing with timestamps.

Some sets of images come from the same camera, and so they have the same timestamp offset necessary to correct them. We bought the camera that our wedding photographer used, so many of those images were exactly 602 days and 14 hours too early. I can instruct digiKam to take the timestamp from the file’s metadata and add that offset to correct them.


Occasionally, an image will lose the timestamp from its metadata, but the file itself will be named with the timestamp if it came from a phone or other similar camera. I can tell digiKam to take the timestamp from the file name and copy that to the actual timestamp metadata. If that timestamp is incorrect, I can also add a command to add or subtract time as necessary. It sometimes takes some finagling and guesswork based on when I know the pictures were taken, but I can usually get them pretty close to the correct time.

Rename
Once I get the timestamps right, I rename my photos. Most of the time, my end goal for file names is “YYYY-MM-DD_Event_Name_###” where the # are an automatically indexed sequence number. When everything came from the same camera, with a valid timestamp, I can go right to that naming scheme. That’s often not the case, though.


For funky albums (sorry, I don’t have a better term), I’ll rename the photos to “[date]_fixit” first. This uses the entire date and time in a standardized format, and the “fixit” suffix tells me these aren’t finished. After I have renamed everything to that temporary format, I’ll scan through and make sure everything looks right. Photos are in chronological order, and nothing got named an unusual date, which means I missed an incorrect timestamp. If everything looks good, I’ll rename the files to my normal scheme and move on to the next step.

Organize
My preference on folder structure has changed occasionally through the years, but the relative style has stayed the same. At the highest level is the digiKam folder. This is where the database is located, and all my photos are within that directory. After digiKam are folders for each year since 2010, plus folders for scanned photos, VHS rips, and a folder for anything 2009 or before or photos without known dates.


Within each year folder, I have folders for events. I used to break years down into months as well, but that became too cumbersome. Sometimes months didn’t have any events, and a full year of events really isn’t that many folders. When I first started using digiKam, I took out the month level of organization, and I haven’t missed it yet.

In addition to events, I have an “assorted” folder for each year. This is for photos that aren’t associated with any given event, just shots that I’ve taken through the year. Typically, that’s where the bulk of my phone photos go, but I’ll move them into the appropriate event folder when applicable.


At this point, my photos are usually in a pretty good state. The original file name is saved, the timestamp is correct, and they exist in a folder structure that makes sense. I’ll double check everything, but this is usually the point where I go back and clean up my workspace. I’ll delete the photos from the original import location, as well as each temporary station.

Filter
After the core steps, I have a sort of optional step of filtering. This is something I want to eventually buckle down on, but it’s more important to me to get all of my current and existing photos into my digiKam database.

What I mean by filtering is taking out the sort of junk photos that typically come with a photo shoot. I’ll take 3 or 4 shots of the same scene, and check which one is the best later. The problem is that I spend time finding the best one, and I have to go through that same process if I need to look through those photos again. Instead, I want to start deleting the inferior photos so that I know each shot is the best version of that scene.

There is a feature called Light Table in digiKam that allows you to compare photos side by side and zoom or scroll to look at the same place in each photo. I haven’t used it much, but it does seem to be really powerful. When I’ve had time to really work in it, I think that will come in handy for filtering out the junk photos.


After I filter an album, I plan on going back and running my rename step again to correct the sequence number. It wouldn’t make much sense to have an album of 30 photos with sequence numbers jumping around to 100. I want them to be exactly in order, with no gaps.

Backup
Whether I filter or not, I try to backup my digiKam database pretty frequently to another external hard drive that I have. My plan is to eventually also write my photos to bluray discs and store them in a fire safe. I think I’ll divide them up by year, and put as many years of photos on the same disc as possible, without breaking a year across discs. That’s still in flux, and I’ll flesh it out when I get there. For the time being, a copy of the database on another folder is the best you get.

This is my process so far. I still tweak it here and there when I can identify improvements, but it’s a far sight better than my previous tactic of dropping photos onto the desktop in a dated folder and leaving them to deal with later. Eventually, I hope to be caught up. For now, it’s a work in progress.

Comments