|
|
iOta is a tool to organize, index, archive, and web publish your digital photography collection. Whether you use a simple point-and-shoot digital camera, or scan your photographs from a megabuck film scanner after having captured it on your megabuck film SLR, this ImageMagick and Berkeley DB based tool will help you organize your digital photography. iOta allows the user to generate uniquely rename and index images to an embedded database, generate thumbnails and browsable HTML indexes, archive directories of images onto CDR, and caption and describe each photograph in the user's collection. In addition, all this information also travels with the image itself in the thumbnail EXIF header. For documentation on the KDE/Qt version of iOta or on other aspects of image organization, please visit the main iOta page. |
|
iOta consists of a main menu (MM), and two sub-menus called the
Image Preprocessing menu (IP), and the Database Access menu
(DA). Hence, effectively, iOta has two parts to it For book-keeping, config options, and download sites, you could refer to Other Sundry Information. |
|
The image preprocessing menu has the following entries:
Image Preprocessing Menu
-------------------------
0 - Exit Image Preprocessing Menu.
1 - Rename images in a directory.
2 - Prepare directory for archiving.
3 - Archive a list of directories.
4 - Web publish a directory.
5 - Border a set of images for the web.
9 - Execute shell command.
The database access menu has the following entries:
Database Access Menu
--------------------
0 - Exit Database Access Menu.
1 - Create database from images.
2 - Delete a record.
3 - Edit a record.
  - Retrieve a record.
41 - Search Category.
42 - Search Name.
43 - Search Description.
44 - Search Keywords.
45 - Search on Date Range.
5 - Insert records from a file.
6 - Get database statistics.
9 - Execute shell command.
To make life simpler, all throughout this document, I will refer to the menu items in a short form which looks somewhat like this. MM->IP->3 would refer to "Archive a list of directories" option (Option 3) in the Image Preprocessing menu, which is under the Main menu. Similarly, MM->DA->43 would refer to the "Search description" option under the Database Access menu.
KingsDownloads:
pic01.jpg
pic02.jpg
Let us first rename these files to be globally unique so that you
have no problem in indexing/searching for the image years
later. iOta uses the date and time stored in the EXIF
header of a JPEG file to rename its images uniquely. Not only
are your photos uniquely numbered, the time and day glares out at
you instantly. The way to do this is to go MM->IP->1.
You are prompted for the download directory name. Type in the
relative or absolute path for KingsDownloads.
At this point, 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 |
If you have read the iOPlan outline properly, you would notice that its a must to have captions for each and every image you photograph if you want to have a really well indexed database. A year later, if you would like to search for an oil spill at Kings Canyon National Park, the category, keywords, and description information for the image will help you in retrieval instantly. Fail to do this, and you will have to browse through all your Kings Canyon images to get to the one you want.
Having said this, there are lazy guys and there are method freaks. Moreover, the same person could be a method freak now and lazy some other time. I myself oscillate between these two modes. Hence, there is an Abbreviated option for captioning and a Comprehensive option. Take your pick.
On entering MM->IP->2, you are prompted for all of the above fields. Usually, the category is a descriptive line for the current set of photographs. It should also be descriptive enough for you to search for months later, as that is your only "search string". For the two photographs that we are dealing with in this example, the category could be Kings Canyon National Park, California.
iOta will prompt you as a captioning file is absent. Just say "y" to continue the process.
In the download directory (KingsDownloads), open up
a flat text file called txtfile, in any editor, and
enter these two pieces of information, preceded by the image
name. Separate each entry (imagename, description, keywords) by
the delimiter #.
An easy way of doing this is to first create txtfile thus: unalias ls; ls > txtfile, and then open it in an 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.
So for our two photographs, txtfile could look somewhat like:
2001-10-10++14-10-20#
Moss, minerals and mountain, Kings Canyon National Park, California #
abstract colors green red rocks #
2001-10-10++15-15-32 #
Oil swirls over water, Parking lot, Kings Canyon National Park, California#
colors abstract yellow puddle reflection #
where, the description for the first photo is "Moss, minerals
and mountain, Kings Canyon National Park, California", and the
keywords for it are "abstract colors green red rocks". Similarly,
the description for the second image is "Oil swirls over water,
Parking lot, Kings Canyon National Park, California" and the
keywords are "colors abstract yellow puddle reflection".
Armed with this information in the txtfile, iOta
prepares the directory KingsDownloads for archiving. It
first creates an index.html of all the images in this
directory which could be easily perused using any web browser.
It also creates a Thumbs directory in your KingsDownloads directory, and places nicely bordered thumbnails of all your images in this directory with the category, description, keywords, equipment, date and copyright information embedded in these thumbnails as EXIF image comments. Each thumbnail in the index.html points to the actual image, which has been left untouched and has been placed in a directory called Pictures.
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
Directory check: At this point, your directory should
appear like this:
MyPhotos:
KingsDownloads/
DeathValleyDownloads/
MyPhotos/KingsDownloads:
Thumbs/
Pictures/
index.html
MyPhotos/KingsDownloads/Thumbs:
2001-10-10++14-10-20
2001-10-10++15-15-32
MyPhotos/KingsDownloads/Pictures:
2001-10-10++14-10-20
2001-10-10++15-15-32
MyPhotos/DeathValleyDownloads:
Thumbs/
Pictures/
index.html
MyPhotos/DeathValleyDownloads/Thumbs:
2001-11-10++14-10-20
2001-11-10++15-15-32
MyPhotos/DeathValleyDownloads/Pictures:
2001-11-10++14-10-20
2001-11-10++15-15-32
Its time for the third step in the Image Preprocessing menu.
MM->IP->3 will archive these directories, which you could
then burn onto CD-R. This step creates two directories,
Thumbs and Pictures under MyPhotos.
It then creates hard links from your actual images and thumbnails
in your sub-directories (KingsDownloads and DeathValleyDownloads)
to Pictures and Thumbs, respectively. It also
creates a hard link from all the index.html files within
these directories to the top-level MyPhotos.
Finally, it creates a master index.html file in MyPhotos,
which is sort of a Table-of-Contents file and has links to each sub
index.html files along with their category information.
The reason for this elaborate procedure of having the original
directories (KingsDownloads and DeathValleyDownloads) as well as
top-level Pictures and Thumbs with hard links is as follows. The
original structure enables you to add in or remove download
directories from your archive. On the other hand, a database
shouldn't really care what directory an image is in. It should
search on its absolutely unique image name, or on other
attributes like category or keywords. Therefore, adding hard
links to a top-level Pictures and Thumbs
directory will make database retrieval of images quite
straightforward and uniform from any archived CDR.
As a final directory check, after the archiving step has completed, you
should have the following in MyPhotos:
MyPhotos:
KingsDownloads/
DeathValleyDownloads/
Pictures/
Thumbs/
index.html
index1.html -> KingsDownloads/index.html
index2.html -> DeathValleyDownloads/index.html
MyPhotos/Pictures:
2001-10-10++14-10-20 -> KingsDownloads/Pictures/2001-10-10++14-10-20
2001-10-10++14-15-32 -> KingsDownloads/Pictures/2001-10-10++14-15-32
2001-11-10++14-10-20 -> DeathValleyDownloads/Pictures/2001-11-10++14-10-20
2001-11-10++15-15-32 -> DeathValleyDownloads/Pictures/2001-11-10++15-15-32
MyPhotos/Thumbs:
2001-10-10++14-10-20 -> KingsDownloads/Thumbs/2001-10-10++14-10-20
2001-10-10++14-15-32 -> KingsDownloads/Thumbs/2001-10-10++14-15-32
2001-11-10++14-10-20 -> DeathValleyDownloads/Thumbs/2001-11-10++14-10-20
2001-11-10++15-15-32 -> DeathValleyDownloads/Thumbs/2001-11-10++15-15-32
MyPhotos/KingsDownloads:
Thumbs/
Pictures/
index.html
MyPhotos/KingsDownloads/Thumbs:
2001-10-10++14-10-20
2001-10-10++15-15-32
MyPhotos/KingsDownloads/Pictures:
2001-10-10++14-10-20
2001-10-10++15-15-32
MyPhotos/DeathValleyDownloads:
Thumbs/
Pictures/
index.html
MyPhotos/DeathValleyDownloads/Thumbs:
2001-11-10++14-10-20
2001-11-10++15-15-32
MyPhotos/DeathValleyDownloads/Pictures:
2001-11-10++14-10-20
2001-11-10++15-15-32
A sample master index.html file can be found
here. You can then go through
the usual steps of making an image and writing it to disk.
I personally use the
cdrtools package (mkisofs+cdrecord) and would do the
following to burn MyPhotos to CDR:
mkisofs -R -J -o /tmp/cdimg path_to_directory_MyPhotos
cdrecord -v speed=4 dev=0,0,0 /tmp/cdimg
This would create a CDR which would be readable on Windows as
well as FreeBSD/Linux systems.
Upload all the images in Publish to your web server, and
place the corresponding Thumbs directory also on your
web server (since the thumbnails carry the caption information).
A sample CGI script, image.cgi, would
generate outputs like you see when clicking on any image on this
web-site.
As before, lets assume that all your upload-able images are in a
directory called Publish. You can copy them into
Publish from your archived CDRs or from the archived
directories on disk. In this Publish directory, create a
flat text file called txtfile which contains the
following two lines per image: (1) The image filename, and
(2) A short one line caption for the image. Therefore, for the
two images in our running example, 2001-10-10++14-10-20, and
2001-10-10++15-15-32, txtfile could look somewhat like
this:
2001-10-10++14-10-20 #
Moss, minerals and mountain, Kings Canyon National Park, California #
2001-10-10++15-15-32#
Oil swirls, Parking lot, Kings Canyon National Park, California#
Now, just go MM->IP->4, provide the directory
(Publish), equipment and film (camera, lens and film
used), and the copyright holder's name, and you are all
set. After the step is over, you can upload the Publish
directory to your web server.
A sample CGI script, image.cgi, would
generate outputs like you see when clicking on any image on this
web-site. This script needs the image path (on your website) and
the filename from which it is being called, and could be written
up in HTML as:
a href=/cgi-bin/image.cgi?Kings/2001-10-10++14-10-20:/iOta.html
img src=/Photos/Kings/Thumbs/2001-10-10++14-10-20 border=0 /a
where, the path for our images is /Photos/Kings/2001-10-10++14-10-20, and we are calling the script from this file, i.e., iOta.html.
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.
The database modeling part for iOta resulted in the
following fields which I thought were useful for any
photograph. You may want to use all or a subset of these.
By default, the AccessTag is set to Personal, ImageTag is set to Normal and QualityTag is set to Normal when you import a set of images into the database. You can later edit the images as you deem necessary (MM->DA->3), and change these fields. Amongst the other fields, Name, Category, Equipment, Film, Copyright are a must and are prompted for by iOta when you prepare a directory of images for archiving. On the other hand, Description and Keywords are extra pieces of information which are imported only if you have followed the Comprehensive captioning guideline.
To insert a directory full of images, just go MM->DA->1
and provide the download directory name, e.g.,
KingsDownloads [1].
Therefore, when running iOta and searching through the
database, it is almost essential to fire up a browser and point it to
$HOME/.iOta.html. Keep refreshing the browser after
every search request.[2].
# Sample iOta Config file for a system where
# photographs have been archived on disk at /home/photographs
database .iOta.db
resultfile .iOta.html
cddev /home/photographs
If you are archiving all your photographs on CDR, then cddev should be /mnt/cdrom for Linux systems, and /cdrom for FreeBSD systems:
# Sample iOta Config file for FreeBSD systems
# where the photos are archived on CDR only.
database .iOta.db
resultfile .iOta.html
cddev /cdrom
It might so happen that you may get broken thumbnails to some or all the thumbnails in the result HTML file. If it happens, please load the appropriate CD number (displayed in the HTML result file) and reload the HTML result page to view the thumbnails.