Skip to main content

# BINS Photo Album

Don Harper

2007-05-21

# BINS Photo Album

The BINS Photo Album is a package to generate static web pages from the command line. Why would you want to do this? Well, most of the dynamic web photo albums require that the server do all the work when the client requests the images, thus either slowing it down, or requiring a very beefy server. Also, you introduce the chance for a script-kiddie from hacking your site. Not good.

Enter BINS. Some of its features include [from the web page]:

- generated album is static : it’s just plain HTML/CSS/Javascript files (Javascript is not mandatory to view the album), no need of any dynamic language (php, asp, etc.) nor database on server side. Album can be burned on CD or DVD.
- album can contains other albums (sub albums): the album can have a tree structure ;
- generation of a thumbnail and of scaled images for each picture ;
- generated album appearance is fully customizable by using HTML templates (5 different templates sets are currently provided) and configuration parameters: colors, number and size of thumbnails per page, number and size of scaled pictures (in pixels or percentage of the original image for the size), fields to display, etc. Those parameters can be set globally (system wide or per user), per album or sub album or per picture (for example, you can change the colors of one sub album or one just one picture page in an album by editing its description file) ;
- several description fields (date, location, etc…) can be associated with the pictures (in text or HTML format). You can easily add or customize these fields ;
- description fields can be set or modified via a command line interface or a GTK+/GNOME-based GUI ;
- A search engine is included in the album : you can find some pictures by searching keywords in their description fields.
- Album can be generated from pictures managed by Zoph.
- speed up album browsing by performing a clean up of HTML code to reduce its size and by pre-loading thumbnails in browser cache using JavaScript code ;

- Exif information and Digital camera support :

  - use the EXIF data structure found on some image files (usually, those produced by digital cameras) to fill automatically some fields (date and time for example).
  - BINS use the Orientation EXIF tag (which is normally set when you rotate a image on you DigiCam) to rotate the picture to correct orientation.
  - For each image, a page provides all information available on the picture and the DigiCam settings when the photo was taken.
  - Additional information are provided for Canon DigiCams.
  - Tooltips provide information about the meaning of some of the fields.
  - All EXIF information is saved in the XML description file, preventing they disappear when the image is modified ;
- internationalization (generation of album in different languages) using gettext. Current languages supported are Catalan, Dutch, English, Esperanto, Finish, French, German, Hungarian, Italian, Japanese, Polish, Russian, Spanish and Traditional Chinese ;
- customizable charset encoding for HTML generation, including UTF-8 (Unicode) support by default. Generation of the Apache `.htaccess` file for correct encoding charset in HTTP headers ;
- use of XML files to save user description of pictures and albums/subalbums and Exif data from image file ;
- handle correctly file and directory names with spaces or other odd characters (excepted ‘/’), and create valid escaped URLs ;
- generate valid HTML/XHTML code. The level of HTML depends of the style used. Some of the styles are valid, table free XHTML.

The web site has some great example. Go check them out.