- The first approach is to blindly use iOta
which will organize your images strictly following the procedure outlined
below.
- The second approach is to utilize the software
described later, and write your own scripts (or download and modify mine)
to perform the organization yourself.
- Of course, the third approach is to read up
the plan here, digest it, and devise your own variant which might suit
you better. If you feel that others can benefit from your modifications,
please drop me a line.
For the impatient, this page has been subdivided into 5 sections.
- The Software
- The Cataloging Process
- Storing and Archiving
- Web Publishing With Ease
- Data Modeling and Databases
The Software
Everything I need can be done using a basic editor and the following
free software.
- ImageMagick: *The* image
processing software. Its indispensable. You have GUI-based as well as
command-line based interfaces to it. I primarily use the command-line
interface for batch processing multiple files. Available for Windows
platforms also.
- CDRecord: A powerful CDR tool. Numerous GUI
front-ends are available but I prefer to use the command-line interface.
For Windows, any CD burning software should do.
- Open Source Databases
[1]
[2]
- MySQL: A simple to use, free database
available for most platforms. MySQL is as close to Oracle you can get in
the Open Source world. They have a SQL based interface and support
transactions. So if you are proficient in SQL and have tackled large
database software before, this is definitely the route to take. This would
also aid you in forming more complex queries to hone down on your images.
- BerkeleyDB: For most people, MySQL
can be overkill for the problem we are trying to address here. Moreover, most
people (like myself) aren't that familiar with SQL and large database software.
DB to the rescue. Its a simple, embeddable, flat-file, key/value pair kind
of database with C/C++/Java/Tcl interfaces for you to write simple scripts
and programs with. Very elegant and fast. It also supports concurrency,
transactions and replication. The primary drawback is not being able to
form complex queries that can isolate the image that you want to
search for. iOta uses Berkeley DB as its embedded database.
- For starters, you can pretty much skip a database
and use a simple indexing program coupled with a web-based search tool such as
FreeWAIS,
wwwwais, swish. You could also simply search using the all powerful:
strings *.jpg | head | grep Desc
where Desc is the descripton that I have embedded into
the image thumbnail. Similar searches could be done for Equipment, Category,
Keyword and other sundry information, as described below in iOPlan.
- Camediaplay: Photo
download tool of my choice, for my D460Zoom (and all Olympus digital
cameras with serial interfaces). You can use the much more versatile
gPhoto instead - a one-stop
downloading tool for all digital cameras.
On the other hand, as with most cameras today, a simple USB card reader
should export the images on your compact flash or smartmedia as a simple
DOS device node, from which you can cut and paste with ease.
If you are scanning
your prints/slides, you are obviously not concerned with this software.
Before you start taking tons of pictures, it will do you a lot of good
to read (or at least glance through)
John Shaw's The Business of Nature Photography.
Excellent organization tips coupled with useful
advice on writing and publishing, make this an indispensible book even
if you are not planning on selling a single photograph.
iOPlan - The Image Organization Plan
The Cataloging Process
Having described the related software, lets jump right into iOPlan.
The first step along your road to better organization is Cataloging.
-
Lets say you have used your favorite download or scanning program and
have a bunch of image files in a directory called KingsDownloads.
For the purposes of this discussion, lets assume that KingsDownloads
contains just two files, pic01.jpg and pic02.jpg.
Directory check: At this point, your directory should
appear like this:
KingsDownloads:
pic01.jpg
pic02.jpg
Where do you go from here? ImageMagick to the rescue.
- First, you have to rename these files to be globally unique so that
you have no problem in indexing/searching for the image years later. John
Shaw suggests a unique index number for each photograph you own - something
that a database can easily access. I prefer to use the uniqueness of
time. If you are downloading from a digital camera, most cameras store
the time inside the JPEG file as an EXIF extension. Simply write a
script (or download mine) which can rename each
file with its timestamp. Not only are your photos uniquely numbered,
the time and day glares out at you instantly.
If you use my script, you should have files named 2001-10-10++14-10-20,
and 2001-10-10++15-15-32 (instead of pic01.jpg, pic02.jpg) in
your KingsDownloads directory.
Directory check:
KingsDownloads:
2001-10-10++14-10-20
2001-10-10++15-15-32
2001-10-10++14-10-20
|
2001-10-10++15-15-32
|
- The second step is the most painful, but the most important - giving
captions. Referring back to the Business of Nature Photography, Shaw
insists that you caption your photographs the day you get them/download
them. Relax this rule, and the captioning mountain will grow bigger every
day. And there is no organization without captioning. The steps involved in
captioning images are as follows.
- Open up a flat text file, say txtfile, in any editor.
View your images one by one in any image or thumbnail viewer.
A download tool such as gPhoto, or a file
browser such as Konqueror will show
you a thumbnail view easily. You can also create a temporary
web page with an HTML index of all your images,
and then view them on any web browser.
- First off, enter a line of text describing the category of photographs in
this directory, for example, Kings Canyon National Park, California. This is
critical for lazy guys like me. The scripts that I have as well as
iOta will be able to work with just this piece of information. So, if
you never get the time to describe and caption each photo separately (as
mentioned below), you can at least add in the category information to the
photos and search based on this. For our set of images, a suitable
category could be Kings Canyon National Park, California.
- Secondly, for you equipment buffs, you should add the equipment
and film descriptions. For my images, this is either "Olympus D-460
Zoom 1.3 MegaPixel Point and Shoot Digital Camera" with "Digital
Smartmedia Card" or it is something like "Canon EOS Elan 7E, 75-300mm
USM III" with "Kodak Gold ISO 100".
- Enter two separate lines of text for each photograph.
The first line is a short readable caption, such as
"Moss, minerals and mountain, Kings Canyon National Park, California"
for the photograph on the left. The second line
is a list of all keywords that you can think of while looking
at the photograph - this is to make the photograph easier to search for
later, while not spoiling or lengthening the caption itself. Separate
these lines using a simple separator character (e.g., "#").
So for our two photographs, txtfile will look somewhat like:
Kings Canyon National Park, California #
Olympus D-460 Zoom 1.3 MegaPixel Point and Shoot Digital Camera#
Digital Smartmedia Card #
Moss, minerals and mountain, Kings Canyon National Park, California #
abstract colors green red rocks #
Oil swirls over water, Parking lot, Kings Canyon National Park, California#
colors abstract yellow
puddle reflection #
For the lazy folks, your txtfile could only contain the first three
lines(category and equipment):
Kings Canyon National Park, California #
Olympus D-460 Zoom 1.3 MegaPixel Point and Shoot Digital Camera#
Digital Smartmedia Card #
For people who are obsessed with information and have the time
and patience to do it, I have included an in-depth table
of what information you can keep per image. You could also use this as a
guideline for implementing your database for images, if you are using one.
iOta works on such a table, and is able to incorporate most of this
information into the image thumbnails.
- Armed with this information in the txtfile,
the next step is to create an index.html of all the images in your
KingsDownloads directory which can be easily perused using any
web browser.
This step creates a Thumbs directory in your KingsDownloads
directory, and places nicely bordered thumbnails of all your images in
this directory with the caption, description, keywords, equipment, and date
information embedded in these thumbnails as EXIF image comments.
The ImageMagick mogrify or convert commands with comment, geometry
and border options can do the trick.
Each thumbnail in the index.html points to the actual image,
which has been left untouched. You can download this script from
my download page.
- Directory check: After the above step, your directory should
appear like this:
KingsDownloads:
Thumbs/
Pictures/
index.html
KingsDownloads/Thumbs:
2001-10-10++14-10-20
2001-10-10++15-15-32
KingsDownloads/Pictures:
2001-10-10++14-10-20
2001-10-10++15-15-32
- You need to perform these steps every time you download a new
set of photographs. I like to label each download directory with
some sort of descriptive name (such as KingsDownloads). You may follow
any other naming convention as it really doesn't matter anymore,
since all your images carry all the relevant information and can be
searched through with ease.
To see the outcome of these steps, you can download the two images
shown above, and use "strings [imgname]|more" to see how
this information is embedded into the image. A sample index.html file
containing these images can also be found here.
Storing and Archiving
After days of photography (you should be eating up megabytes of images
every day now, shouldn't you, instead of reading this webpage), and after
religiously following the cataloging process for your downloads/scans, you
decide that you might want to archive your images. I prefer to burn my
images on CD-R. I keep two working copies of every set of images on two
cheaper CD-Rs, and keep one really pristine copy on a
good-quality (Gold?) CD-R, which I just use for burning more copies.
For me the critical mass to transfer my images on CD-R is about 375 MB worth
of photos (about half of the capacity of a CD-R).
I use a layering approach for burning my images. Every time I make
a copy of about 350 MB of my photos, I burn the previous set of
350 MB photos with it. This way I ensure that I always have extra and
overlayed copies of my photographs.
Web Publishing With Ease
So far, you have cataloged your entire photo collection and archived
them on CDR. You just spent your savings investing in a domain
name and are planning on spending your pocket money on a hosting service.
Now you want to publish your work on the Web. Well, you already have
all the required information embedded in your images, so the hard part is
over.
- Let us create a Publish folder for copies of the publish-able
photographs.
- Using ImageMagick's mogrify or convert command (geometry, border, and
draw options) coupled with ImageMagick's identify command (for extracting
the dimensions of the image), you can add borders and copyright information
to all your publish-able images in one batch through a simple
shell script. This script also creates a
Thumbs directory and copies all thumbnails into it, which already
contain the Description embedded in them.
- Just upload the contents of the Publish directory to your
web server.
- Since you have already done the hard work of captioning, you can
write a simple CGI script and let each thumbnail
in your web page point to this script with parameters like image name and
return page. This script would create an HTML document on the fly with the
image nicely centered, and display your caption information below it.
It would also allow the user to click back to the source HTML page.
Click on any thumbnail in this website to see the parameters being passed
to /cgi-bin/image.cgi, and of course, you can also evaluate the output
that this program produces.
For consistency, you can click on the images below to see how this works.
Also, you can download the actual images (not the thumbs), and run
"strings [imgname]|grep Desc:" to see the caption.
Data Modeling and Databases
For those whose images have outgrown the capabilities of simple greps
across their JPEG files, using a database becomes a must. The choices are
varied as I have discussed in the Software section,
and you should pick one based on your skill level and ease of use. For myself,
I have built a simple Berkeley DB
based embedded database application called iOta which satisfies the
entire plan outlined above. To learn more about downloading and using iOta,
please visit the iOta page.
Either way, the
critical step is to decide what goes into the database, and the fields below
are my interpretation of what is useful for my images. The more you enter,
the more specific your searches could get.
- Name: [Char 30]
The unique image name, based on date and time.
- Category: [Char 255]
The broad category of images, such as Kings Canyon National Park.
- Description: [Char 255]
A more specific description for each image. Something
which could be displayed as a caption to the image.
- Keywords: [Char 255]
Phrases and words describing the image which may not
appear as part of the caption/description, such as "patterns green cloudy"
- Equipment: [Char 128]
All information about equipment ranging from camera used
to lenses, whether filters were used etc.
- Film: [Char 80]
Film type used.
- Copyright: [Char 80]
Copyright information about the image. Usually this will be your name.
- Access Tags: [Short Int]
The access control for the image. I have three access types.
- Private images - for my eyes only.
- Personal - for a very small audience, say, family.
- Clique images - for a larger set of people, say, close friends.
- Public - for everyone to see.
- Type Tags: [Short Int]
The type of image. Currently, I have 4 different types.
- Original - nothing special. The default.
- Enhanced - Color, levels, contrast etc. adjustments on original.
- Black and White - Black and white or desaturated.
- Sepia - Any duo-toned version.
- Duplicate - An identical looking image.
- Quality Tags: [Short Int]
The quality of the image. Makes it easy to search for good images when
you have terabits of other lower grade images lying around.
- Ordinary - A regular image.
- Poor - Something to be ashamed of.
- Good - Better than average images.
- Excellent - Some of the best photographs. In this was it is easy to search
for your best photographs when you desperately need them.
- CD Archive Number: [Short Int]
This is your CD volume number (after archiving and burning), or your
Kodak PhotoCD or PictureCD number. You can play tricks like keeping the
first digit to represent the type of CD (Digital camera, Kodak PhotoCD
or Kodak Picture CD), and the rest as a CD number.