Description of exiflow
What is ExiFlow?
Exiflow is a set of tools (command line and GUI) to provide a complete digital photo workflow for Unixes. EXIF headers are used as the central information repository, so users may change their software at any time without loosing their data.
The latest version is available at our project page.
Are we defining a fixed workflow?
Not really. You may integrate these tools into your workflow in any way you want. However, it may be good to understand what kind of workflow we are in, and eventually adapt as much of it as possible for two reasons:
- The workflow we use is of course fully supported by our tools.
- We killed huge amounts of time with reading and thinking before we started to code, so there's nothing in our workflow we can't explain. Read on to learn about it.
Are filenames important?
Yes, absolutely. The names that your camera generates are neither expressive nor unique, so they are not the first choice for long term archiving.
It's good to have the image number in the filename, but it would be better to have the date and time of shooting in there, too, as well as the artist name and the full camera model used, and of course the revision number of edited pictures as parts of the filename would also be handy. Put all that together and you come up with names of 100 characters or more. Sadly, most photo professionals recommend limiting filenames to 26 characters over all to satisfy the needs of all photo databases, printing services and commercial archiving software. At the same time they recommend to include at least the date, the artists initials and a revision number.
Considering all this, we came up with the following file naming scheme to include as much information as possible in 26 bytes:
Given a camera that saves a file as:
we will rename that file to:
At first there is 20050412. That's a date, telling us the photo has been taken on 2005-04-12. This is determined by looking it up in the image's EXIF information.
Then there is n001234. The "n00" part is read from a config file as the three byte string to be put there for a given camera model. In this case, the camera model information in the EXIF header reads "Nikon D70", and the config section for that model reads "n00", meaning an "n" as a model indicator since I also own an HP camera for which I configured "h00", and the "00" as a way to extend the counting possibilities beyond 9999 pictures. Once the camera switches from 9999 to 0000 I will change that string to "n01". The "1234" part is just the numeric part of the original filename.
At last there is ur000. "ur" are my initials; I have simply configured "If it's a Nikon D70, the artist is me". Of course there are possibilities to override that. The "000" part is a revision number. This is an original, untouched file, so it's revision is 000. An automatic conversion to JPG would also have revision 000 since there is no interaction and the files are still distinguishable by their suffixes. Once I convert it with custom parameters or do some kind of editing, I will save it as revision 100. Another derivate of the original will get revision 200. A derivate of revision 100 will get 110, a derivate of 110 will get 111 and another one will get 112. Got the idea? Using this revision scheme lets you know about the basic editing history (if there's any) by just looking at the filename. If this is too complicated for your needs you are free to use these three bytes in another way or to leave them alone.
There's one exception regarding the initial "000" revision: If the software detects the presence of a low quality JPG accompanying a raw image, the raw file gets revision 000 as usual, but the low quality file will get revision 00l so that it can't be confused with an automatically converted *000.jpg of high quality.
What's up with these config files?
Some of our tools get their wisdom by reading config files. These files reside in ~/.exiflow and will be created an the fly, but you should edit them to contain information that matches your real circumstances. For example, your initials are unlikely to be "xy". We strongly advise you to fiddle with these settings using some test data until you are satisfied with the results. To quickly check the EXIF data of an image you may use tools like exiftool or exiv2.
Which tools are provided by ExiFlow?
- This is the GTK frontend for all other tools. If the mouse is your best friend you will like this one.
- Import files from given directories to your photo folder. Optionally unmounts source media after successfull import.
- Rename a bunch of image files according to our holy file naming schema.
- Personalize images by setting EXIF fields to values spezified in exif.cfg or on command line. Any arbitrary field name may be configured or given. This is normally used for artist and copyright information.
- Find groups of derived images and exchange EXIF information between them. That way, a freshly edited derivate can automatically inherit it's mothers EXIF information.
- Automatically gate information between gthumb metadata and the image's EXIF information. This let's you describe and tag your photos whith gthumb and transfer everything to the according EXIF tags afterwards. The other direction is also possible, so you are never bound to using one specific piece of software.
What does a typical workflow look like?
- Take some photos. :-)
- Import them with exiimport. You may want to configure your system to automatically run exiimport once you insert a media containing images.
- Make a backup copy of the whole directory. Do this until you are sure that there are no bugs in this or other software you are using that could cause data loss.
- exirename the images.
- exiperson the images.
- Only if you shoot raw images:
- Convert raw files to jpegs, maybe using ufraw or dcraw.
- exiassign to get the EXIF tags into the JPG files.
- View, sort, tag and describe your photos with gthumb.
- exigate all information from gthumb to EXIF.
- you made derivates by converting or editing manually:
- exiassign to have the derivates tagged like the originals.
Your images are now prepared to be archived, sent out to other people, published on the web by hand or automatically with software like Gallery which can make use of the EXIF fields to generate descriptions, titles and more. We promised you: You may change your software at any time. The resulting images are fully selfcontained, making use of existing and well established standards. You can continue to use ExiFlow to manage them, but if you decide to drop ExiFlow you won't loose anything but our good will. ExiFlow is here to help you, not to bind you.
Have fun using our tools! If you find bugs, please report them at our bug tracker.
Thanks in advance,
Ulf Rompe, developer
Sebastian Berthold, developer