Web Album is a free program that will create a web based photo album from a collection of digital images. It effectively scans all your directories from a user selected root directory creating thumbnail representations of your photos, templates for captions of every photo and finally web pages that include your thumb nails with captions and links to the original photos. Also web pages for intermediate directories will be generated containing links to their sub directories.
As an example I have included some photos which you can access here.
The following screen shots show the rather simple user interface. It is a small specialized program. I wrote it to fill a particular need I had and because other programs I found on the web did not exactly fill my needs.

Web Album now uses Java WebStart for automatic download and starting. The only requirement is that you have Java WebStart installed on your machine. If you have installed Java version 1.4 you already will have Java WebStart installed.
You can install/start Web Album by clicking here.
You can install Java Webstart by clicking on the following image.

In a command window enter:
java -version
Make sure the response indicates that the version is greater than or equal to version 1.2
In a command window go to the directory in which you have saved the album.jar file and enter:
java -Xmx128000000 -jar album.jar
You can also append a directory path if you wish, e.g.
java -Xmx128000000 -jar album.jar /stuff/photos
Most people make a batch or script file to do this. Here is one for Windows. Download it into the same directory as the jar file and if desired make a shortcut of it on the desk top.
A velocity template is executed for every generated web page by Web Album. It describes how the elements passed to the template are to be included into the generated html file. Templates are provided to create a standard web page or to create the web pages similar to those in the example. Templates are typically located in a template directory and may be loaded from the Web Album program. The actual template used may be selected from the Page Design panel.
- $title - the name of the directory being generated
- $instructions - blurb about clicking on a link to see full size
- $pageDescription - a directory specific string
- $footer_status - "Automatically generated on..."
- $date - date page was generated $user_name - user name
- $user_email - user's email
- $user_name - user's name
- $footer_credit - blurb about this tool
- $bannerBackgroundColor - Default color's taken from the Page Designer
- $pageBackgroundColor - Default color's taken from the Page Designer
- $bannerFontColor - Default color's taken from the Page Designer
- $pageFontColor - Default color's taken from the Page Designer
- $hasLists - there are images present to display
- $theList - list of images for iterating over
- $hasDeferredList - there are large images to display
- $theDeferredList - list of large images for iterating over
- $thumb_scale - the reduction factor used to create thumbnails
- $required_columns - number of columns of thumbnails
- $include_description - should description be included (boolean)
- $date_creation - should date of file creation be included (boolean)
- $time_creation - should time of file creation be included (boolean)
Having got a list of image entries ($theList) we can iterate through it retrieving properties and methods from each Entry in the list and setting the html as required. For this we use standard Velocity commands e.g.
#foreach ($entry in $theList)
## print entry filename
$entry.getScaledImageFile().getName()
#endVelocity allows us to retrieve properties and methods of a java object so getting the name of the scaledImageFile means invoking that method which returns a regular java.io.File object which we can then ask for its name through the getName method. See the javadoc for web.Entry for a full list.
- $entry.getWidth() = the scaled image width
- $entry.getHeight() = the scaled image height
- $entry.getCaption() = the scaled image caption
- $entry.dateString() = the scaled image date creation
- $entry.timeString() = the scaled image time creation
- $entry.getImageFile() = the full size image File (java.io.File)
- $entry.getImageFile().getName() = the full size image File as a string
- $entry.getScaledImageFile() = the scaled image File (java.io.File)
- $entry.getScaledImageFile().getName() = the scaled image File as a string
You are welcome to have the source code to Web-Album. There is no licence or guarantee associated with this program. All I ask is if you develop further enhancements is that you consider giving me access to them so that I can add them into the next version. The sources are in Java JAR format and can be extracted by using the following command:
jar xvf source.jar
Gerson Galang contributed the captions editing and web page design facilities.
Ewan Harrow contributed the velocity template based web page generation.