Photomaniac Media Library
Wednesday, 23 November 2005 11:16
Current status: Under Development

The Photomaniac Media Library is a server based media management solution for digital photographers who have to manage large amounts of digital media. Its strength is its team functionality, speed, cross-platform compatibility, and cost efficiency. It is based on open source software, and it is open source itself. It is developed on behalf of The Photomaniac Home.

Abstract

The Photomaniac Media Library is a server based media management solution for digital photographers who have to manage large amounts of digital media.

It provides version control, support for RAW images and all standard graphic formats, support for EXIF and XMP information, and recognition of duplicates. Its strength is its team functionality, speed, cross-platform compatibility, and cost efficiency.

The photomaniac Media Library only comes with a text based user interface, but is built to easily integrate in platform specific graphical user interfaces. These will be developed separately.

It is based on open source software, and it is open source itself. It is developed on behalf of The Photomaniac Home. The project and downloads are hosted by Sourceforge.net.

History

I am a photographer and software developer, and I am trying to manage about 35000 pictures. Since I have started with digital photography in 2001, I have been struggling with finding an appropriate software solution for managing my pictures. There were always so many restrictions in use, or limitations in the number of pictures. File system based solutions as ACDSee do not provide sufficient indexing facilities. They also do not provide possibilities for managing duplicates and multiple versions of pictures. Apple's iPhoto 5 is great, but its speed deteriorates exponentially with the amount of pictures to be handled. Adobe Bridge from the Creative Suite comes a bit closer - especially used with Adobe's Version Cue server. But it is costly, and too proprietary. It is hard to integrate is with other non-Adobe software.

What I was looking for was a version control system, which can deal with pictures and concurrency (like CVS does for source code). It must be able create thumbnails (also from Nikon and Canon RAW pictures) for fast browsing. Ratings, titles and EXIF/IPTC attributes must be available for searching. Organisation of photo albums and prject folders must be possible. The solution must be easy to integrate with different prost-production systems. It should also run on at leat MacOS X, Windows XP and Linux.

This shouldn't be too hard to achieve! Or? After some thinking I began to write my own solution.

Functional Overview

The system will consist of a client and a server. The server is a database server, which safely stores and indexes the media assets. The client is a small program which runs interactively with a user interface, or as a scheduled batch job.
 
ImageThe client application is able to store, view and convert digital photos as JPEG, TIFF, RAW, etc. It also creates and stores thumbnails for accelerated viewing. The client provides an interface for project management, where different team members can concurrently change, rate, index media assets and create shared work folders. The client itself can not be used to retouch and modify media assets. But it integrates with any other application like Adobe Photoshop or Capture One.

The database server can be located on any machine (any platform and any location) in a network, whether it is a local network or the internet. For that matter it can also be installed on the same computer as the client. The client connects to the server via the network, and manages remotely the media assets.

In a typical setup there would have a central server running the database application, and a number of workstations. The picture illustrates a studio installation, where different persons are able to work concurrently on the same projects, and still experience good performance, even when working with large RAW media.

ImageThe second picture shows an alternative setup, where photographers can send their pictures via the internet to the studio, while others in the studio can view and retouch them as they come in. Work folders can be created and published. The attached webserver access the database server directly, and makes the published workfolders available on the company webpage.

Of course the shown setups can almost arbitrarely be mixed and modified. The system setup is incredibly flexible, and can be adapted to support any workflow. Additionally, extensions to it can be written in any language and/or platform.

Project Status

The project is currently in the technology research and prototyping phase. In this phase I am still changing the requirements and the design. But I intend to design the prototype well enough, so that it can be used for the first public release. This would probably be in the beginning of 2006.

Development has started in as follows:

  • A portable project has been set up using the GNU autotools.
  • The core is developed in a GNU environment, consisting of GCC, GDB and Emacs or variants.
  • C and C++ are chosen as languages, since they provide me with best performance, most powerful grammar and easy portability.
  • Documentation is generated with GNU texinfo and doxygen.
  • The graphical user interfaces will be developed in the individual platform's favourite development environment (eg. Visual Studio on Windows, xCode on the Mac, etc...), but this will be done outside of the scope of this project.
  • The core contains special functionality for RAW processing (at least for Nikon and Canon RAW).
  • A hash code algorithm will be used for recognition of duplicates.
There are a number of technologies coming together in this project. Therefore it is important to spend proper time on technology review. Many aspects have not yet been covered, but the things for sure are:

  • MySQL 4 is the database server. Later the system will be extended to also support Oracle, Microsoft SQL Server and XML files. MySQL is open source and has production stability.
  • All compression (also in communication) is done using the zlib library. It is open source and established as a standard compression on all platforms.
  • MD4, MD5 or SHA-1 algorithms will be used for creating consistent hash codes. The decision will be done based on the performance of their implementations. They are well established standards.
  • The cryptography library Crypto++ will be used for all hash code related operations. If stable, and if MD5 is the hash code of choice, then libmd5-rfc could be an alternative.
  • A customized version of Dave Coffin's dcraw program will be used for preprocessing RAW files, and for converting them into the PPM format. Dcraw supports almost 200 camera models, and is among others also used in ACDSee and Adobe Photoshop.
  • Thumbnails will be stored as JPEGs, which will be created using the the netpbm and libjpeg libraries, a protable standard library, widely used in other applications.
  • EXIF and IPTC information will be extracted using a modified jhead or the Exiv2 library.
The public project repository has been opened on http://www.sourceforge.net/projects/pm-medialibrary. This is where the source code and the documentation can be obtained. Also various forums and project tracker facilities can be accessed.

License model

The Photomaniac Media Library is free software; it can be redistributed it and/or modify it under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation.
Last Updated on Sunday, 15 January 2006 00:00