Nikon ViewNX and Workflow – some thoughts

Coming back after other activities have not left sufficient time – as the regular readers will have noticed – for my photography hobby. Looking at the state of my archive, which I do maintain in JPG format using the Photoshop Elements 5.0 photo browser, I was in for a surprise.

I was missing about 5000 images I had taken in 2009 and 2010 from the archive. Not because Photoshop Elements somehow lost them, but because they actually never made it into the catalog – me being lazy. After I had had such a good grip on keywording the last 5 years, what had happened?

Well, the switch from the D70 to the D300 back in mid-2008 rendered the Nikon software I had purchased for about 150€, Nikon Capture 4.4, useless. I was to upgrade to CaptureNX, which I did give a test run but found it to be too different from Capture 4.4 to consider an immediate upgrade back then – I wanted to have another (probably my 3rd or 4th) look at Adobe Lightroom.

So I reverted back to use the Nikon View software that Nikon ships with its cameras, and upgraded this to the ViewNX 1.0 (up to 1.5 since then) so it could understand the D300’s RAW images. I found some very nice improvements in ViewNX over the original Nikon View (e.g. it keeps the 100% zoom when paging through images), so I changed my workflow to include ViewNX. Why didn’t I shoot RAW and JPG in parallel? Well, the D70 was not powerful enough to provide high quality JPGs in-camera concurrent with writing the RAW, they were of only basic quality. So this was not an option. The D300 of course could, but looking at the space requirements of the new 12 Megapixel images, I chose to keep my old workflow shooting RAW only.

What did I do different that prevented me from being diligent with my archival duties?

Well, the workflow with Nikon Capture was:

  1. Import from CF card using Nikon Transfer copying into a directory within the RAW/2008 sub-directory
  2. Immediately fire up Nikon Capture 4.4, and start the batch conversion to JPG on the newly imported images
  3. Move the resulting JPG files over into the JPG/2008 folder hierarchy
  4. Let Photoshop Elements detect the new files and import them – the JPG/2008 folder is among the watched folders of Photoshop Elements, so it will automatically offer to import them
  5. Keyword the images in Elements

I tried to perform the same workflow with ViewNX, and conceptually it works just the same. But there is one subtle difference that is only required on a variant of the official workflow above, the so called “I was lazy” variant (which does happen more often than I like): I might have downloaded and browsed the images of multiple shoots before I start the keywording workflow. So the images have already been downloaded and placed into separate folders (one per shooting). Easy enough with Nikon Capture, its Tools… Batch dialog has a simple “include subfolders” checkbox which I used to let it process all folders, not just one. And there is the gotcha – Nikon ViewNX’s export function can not do that.

Now, this is really ridiculous as this requires probably only a dozen lines of source code by the programmers of ViewNX, and leaving this option away leaves those programming-illiterate out in the rain or with a huge amount of manual mouse work. Thank you, Nikon!

I have fixed my problem with a self-written Python script that performs the following actions:

  1. Scan through the RAW folder, to find subdirectories that exist there but not in the JPG hierarchy. Those must be the newly transferred (or forgotten) shootings that have no equivalent in the JPG archive.
  2. For each of these folders, copy all RAW files into a single processing directory. Make sure not to touch the RAW directory, as this is the original data!
  3. Then the manual step: Fire up Nikon ViewNX, select all files in the processing directory, and start the export to JPG (high quality setting). Go to sleep… I have measured a conversion rate of about 150 images per hour on my trusty 2003-PC.
  4. Run the script again, it will now find the JPG images created, move them into the JPG archive hierarchy, and delete the RAW images.

Two tricks used here, as we programmers tend to do:

  1. I do not do a real copy of the RAW images, which would be really slow and expensive in terms of disk space, I rather use the Cygwin version of Python which can create hard links on the Windows file system using the os.link() function. This is a very quick operation that needs nearly no disk space, and ViewNX can’t see that this is “just” a hard link and will process the image as normal.
  2. Second trick is to keep the original directory name of the image – remember I do copy all RAW images into a single directory for ViewNX – as a prefix to the image name, so e.g. an image called 2008/20080130_D300_Ammersee/_DSC1234.NEF would be called 2008CCC20080130_D300AmmerseeCCC_DSC1234.NEF in the processing directory, with the CCC being my carefully chosen separator assuming that no image name contains the CCC character sequence. Moving the image to JPG, those separators are detected and replaced by the approriate slahes.

Script works nicely, ViewNX is chewing on the 5000+ file RAW backlog and I will have my archive up to date again.

Lesson learned: When not in dire need of CF Card space, shoot both RAW and JPG!

Leave a comment