IIPImage 0.9.9 Server Release

Version 0.9.9 of the IIPImage server is now officially released! This is a major new version containing a host of new features, major performance enhancements and numerous bugfixes. Major new features include support for JPEG2000, Memcached and Watermarking. This will be the last in the 0.9.x series: the next release will be the big 1.0!

JPEG2000

You can now stream high resolution JPEG2000 as well as TIFF images directly through the IIPImage server. JPEG2000 decoding is done via the high performance Kakadu library. Unfortunately Kakadu is not open source, so to compile yourself you will need to purchase a license from Kakadu Software. Alternatively, pre-compiled binary packages of IIPImage with JPEG2000 for Debian, Ubuntu and other Debian-based Linux distributions are available from our friends at Old Maps Online, together with installation instructions and other information on using JPEG2000. The use of these binaries are for non-commercial use only.

The open source JPEG2000 libraries currently available such as OpenJPEG and Jasper are unfortunately just not yet fast, stable or scalable enough to handle the kind of large images IIPImage is used for. Thus, we have reluctantly decided to use Kakadu as an interim solution, but a fully open source implementation based on openJPEG will be included in the next server release 😉

Memcached

Memcahced logoMemcached is a widely used high-performance, distributed memory object caching system . IIPImage is now able to store and retrieve image tile data directly from a single or cluster of memcached servers. This can dramatically increase server performance under heavy loads and allows the cache to be shared between various IIPImage server instances and even with memcached-enabled web servers such as Nginx. In order to configure it you must set the MEMCACHED_SERVERS parameter with a comma-delimitted list of memcached servers with optional port numbers. For example: “localhost,192.168.0.1:8888,192.168.0.2″. You can also optionally set a cache timeout with the MEMCACHED_TIMEOUT parameter, which should be an integer giving the number of seconds. The default value is  86400 seconds, which is equivalent to 24 hours.

Watermarking

Watermark exampleIt is also now possible to dynamically add a watermark to your images without having to modify the original TIFF or JPEG2000 file. The  watermark is dynamically added to each tile from a watermark image you supply. To do this, simply create your watermark and save it as a TIFF image. This image should be not be bigger the tile size used for TIFF (or JPEG2000) tiling. If bigger, it will  simply be cropped to the tile size. If smaller, the watermark will be positioned randomly within the available space. The image can be either colour or grayscale, 8 or 16 bit, with or without an alpha channel. You then need to configure the server to use it via the WATERMARK parameter, giving the path to the TIFF watermark file. Two other parameters, WATERMARK_PROBABILITY and WATERMARK_OPACITY are available which determine the probability at which the watermark is used (for example if you only wish watermarks to be applied to 50% of your tiles), and the opacity applied to the watermark.

Please see the detailed server documentation for further details on configuration.

Development of these features was carried out in conjunction with Old Maps Online with support from a Moravian Library in Brno R&D grant from the Ministry of Culture of the Czech Republic.

Windows

This release also has better Windows support with a native Visual C++ 2010 build environment used to generate a new highly optimized binary release. Thanks to Rob “Bubba” Hines for his help in porting.

Download

The source and binary releases are available now from the download section.