IIPImage JPEG2000: Free Software for Zoomable High Resolution Online Images!

IIPImage is a light-weight client-server system for fast and efficient online viewing and zooming of ultra high-resolution JPEG2000 and TIFF images. It is designed to be bandwidth and memory efficient and usable over a slow Internet connection even on gigapixel size images. The IIPImage server is compatible with a large number of client-side viewers. You can use either pure web viewers (written only in HTML/JavaScript) or plugin-based viewers using Adobe Flash, Silverlight or Java. Even applications such as Seadragon for Apple iPhone or Google Earth for Mac/Linux/Windows can display your image distributed with IIPimage software.

Anybody who wants stunning online presentations of scanned documents, paintings, maps, books, newspapers or other high-resolution images can use the free IIPImage software to publish the images to the web directly from JPEG2000 or TIFF files.

We recommend installing the IIPImage software on a Linux (or other UNIX) server. We have prepared a easy to install binary package for Debian and Ubuntu with step-by-step instructions for installation.

IIPImage streams images to the user through either the IIP protocol (Internet Imaging Protocol) to one of the native clients or also in the latest releases via the Zoomify or Deep Zoom tile protocol. Any Zoomify or Deep Zoom compatible viewer can, therefore, be used for easy online panning and zooming of the published images. Recently Klokan Technologies GmbH has implemented also support for IIIF protocol (http://iiif.io/). 

Neither the distribution nor the use of this application should be for financial return!

IIPImage is available for free, under an open source license (GNU GPL). It is FastCGI-based and can be embedded in most web servers. JPEG2000 support has been enabled via the Kakadu JPEG2000 library, which provides one of the fastest implementations of the JPEG2000 ISO standard and is redistributable for non-commercial use only.

Unlimited license availability

The image-server binaries without any restrictions on use can be acquired on request from Klokan Technologies GmbH, who has rights for commercial binary redistribution for both Kakadu JPEG2000 library as well as IIPImage.

How to convert my images into JPEG2000?

There are many tools able to convert existing images into .JP2 format. We recommend for batch processing using the freely available tools distributed with the Kakadu JPEG2000 Library: for encoding (kdu_compress), transcoding (kdu_transcode), viewing with metadata and file structure display (kdu_show):

You can download them for free for Windows, Mac and Linux at: http://www.kakadusoftware.com/
Please read the documentation attached to these tools.

Encoding parameters for JPEG2000

JPEG2000 as a Preservation and Access Format for the Wellcome Trust Digital Library (view a local copy) by Robert Buckley from the Xerox Corporation gives a great introduction into the JPEG2000 encoding parameters.

Another interesting article with best-practice is: JPEG2000 Implementation at Library and Archives Canada.

In case you are encoding news papers, then you can read the recommendations in the article: JPEG 2000 Profile for the National Digital Newspaper Program (local copy attached) and the Technical specification at http://www.loc.gov/ndnp/. You find in those documents direct commands for using kdu_compress.

To understand the JPEG2000 internals you should study the original JPEG2000 documentation, and the JPEG2000 book and articles from the author of Kakadu library like:

JPEG2000 lossless masters for both archiving and online distribution, (replacement for TIFF masters)

It is possible to prepare a lossless JPEG2000 files with kdu_compress. For correct parameters please read the documentation on this page and in linked articles.

When migrating to JPEG2000 as your archival master format for scanned images be sure to correctly convert all technical metadata embedded in the original (probably TIFF), including ICC color profiles. Details: Data Dictionary – Technical Metadata for Digital Still Images (local copy attached)

JPEG2000 Migration project:

Very useful is also the article: A format for Digital Preservation of Images by Buonora P., Liberati F.

Alternatives to this project

OpenSource projects:

There is Adore Djatoka image server which is Java-based. Info at: http://www.dlib.org/dlib/september08/chute/09chute.html
Another alternative is the Zoomify-compatible J2K Tiler Renderer: http://dltj.org/article/introducing-j2ktilerenderer/. Both are using Kakadu library.

It is a matter of taste what project you choose. We think that our C++/FastCGI IIPImage application is simple, fast and easy to install and deploy. IIPImage supports several different web viewers for the presentation, and you get the Zoomify and DeepZoom tile compatibility directly.

Commercial products:

For example: LizardTech Express Server, Aware JPEG2000 Image Server, LuraWave JP2 Image Content Server, Centrica XLImage Server, ... or modules bundled into the complex systems like ContentDM or DigiTool.

Why proprietary Kakadu JPEG2000 library as the base for GPL IIPimage instead of the existing free implementations of the JPEG2000?

We did performance tests of available existing open-source libraries such as OpenJPEG and JasPer. Unfortunately those did not provide the requisite decoding speed and gigapixel image support necessary for real-time distribution, so for now we have chosen the Kakadu library. The OpenJPEG library, however, looks promising for the future.

This choice, however, imposes a limit on the use of IIPImage when used with Kakadu: even though we are releasing our project as open-source software, the decoding functionality for the JPEG2000 format can be used only for non-commercial purposes due to the Kakadu library license.
We are the Licensee of Kakadu library according the Kakadu Non-Commercial License and we distribute the Application to you (the Third party). The relevant paragraph from the license agreement is: "The Licensee shall have the right to Deployment of the KAKADU Software, provided that such Deployment does not result in any direct or indirect financial return to the Licensee or any other Third Party which further supplies or otherwise uses such Applications.".


IIPImage itself is fully open source with source code available under the GPL license. The Kakadu licensing restrictions only apply when IIPImage has been built with the Kakadu library.

To compile the source code of IIPimage yourself with support for JPEG2000 images you will need to buy a license for the Kakadu library. If, however, you are happy with our binaries then this will not be necessary and you can just download and use the package we provide.

Once the OpenJPEG library is more stable it can be linked with IIPImage to replace the Kakadu library - and we will be able to remove this 'only for non-commercial use' condition and provide unlimited JPEG2000 decoding functionality to IIPImage.

If you are an institution who has a grant or project where you wish to use JPEG2000, please consider supporting the development of open-source and free software projects such as OpenJPEG and IIPImage as we have done.

Update: initial implementation for OpenJPEG2 has been done. Without additional optimisations of OpenJPEG2 the speed on larger images is still about 1000x faster with Kakadu library.
 Share on:  FaceBook  Twitter  Bookmark and Share   

Download the software

Installation package for Debian GNU/Linux and Ubuntu Linux
You can also download the source code.

Note: JPEG2000 decoding for non-commercial use only.

Have a look how your TIFF and JPEG2000 images can be presented on your website:

Examples of the viewers for a JPEG2000 file provided by IIPImage server:

IIPImage project website:

Copy & paste commands for JPEG2000 encoding

Here we provide a simple example commands for encoding from .tif to .jp2 for testing IIPImage.
For the production encoding on your side you should read the mentioned documentation and the best practice articles and design the encoding parameters directly for your use case.
The parameters important for use in IIPImage JPEG2000 are: QualityLayers, ResolutionLevels, and Precincts/Tiles.

Encoding only for IIPImage distribution (fast but lossy compression, only one quality layer, seven levels):

kdu_compress -i input.tif -o output.jp2 -rate 0.5 Clayers=1 Clevels=7 "Cprecincts={256,256},{256,256},{256,256},{128,128},{128,128},{64,64},{64,64},{32,32},{16,16}" "Corder=RPCL" "ORGgen_plt=yes" "ORGtparts=R" "Cblk={64,64}" Cuse_sop=yes

Example of a lossless image with fast display in IIPImage (only the lossy part is decoded for online displaying - by default just the first half of quality layers is decoded to speed-up the rendering):

kdu_compress -i input.tif -o output.jp2 -rate -,0.5 Clayers=2 Creversible=yes Clevels=8 "Cprecincts={256,256},{256,256},{128,128}" Corder="RPCL" ORGgen_plt="yes" ORGtparts="R" Cblk="{64,64}"


Recommendation from LOC NDNP JPEG2000:

To generate a JPEG 2000 with Kakadu, use:

kdu_compress -i YOURINPUT.pgm -o YOUROUTPUT.jp2 -rate 1,0.84,0.7,0.6,0.5,0.4,0.35,0.3,0.25,0.21,0.18,0.15,0.125,0.1,0.088,0.075,0.0625,0.05,0.04419,0.03716,0.03125,0.025,0.0221,0.01858,0.015625 Clevels=6 Stiles={1024,1024} Cmodes={BYPASS} Corder=RLCP -jp2_box YOURMETADATA.xml

Note that the metadata xml file must begin with “<xml>“ followed by a newline.

To generate a JPEG 2000 with Aware, use:

j2kdriver -i YOURINPUT.tif  -t JP2 -p RLCP -w I97 6 -B 1 -p RLCP --tile-size 1024 1024 -yB 0 1 -yB 1 0.84 -yB 2 0.7 -yB 3 0.6 -yB 4 0.5 -yB 5 0.4 -yB 6 0.35 -yB 7 0.3 -yB 8 0.25 -yB 9 0.21 -yB 10 0.18 -yB 11 0.15 -yB 12 0.125 -yB 13 0.1 -yB 14 0.088 -yB 15 0.075 -yB 16 0.0625 -yB 17 0.05 -yB 18 0.04419 -yB 19 0.03716 -yB 20 0.03125 -yB 21 0.025 -yB 22 0.0221 -yB 23 0.01858 -yB 24 0.015625 --set-output-jp2-add-metadata-box XML YOURMETADATA.xml -o YOUROUTPUT.jp2

You can also use ImageMagick:

    convert ...

    For big images you must use: PRECINTS or TILES: parameter "tilewidth=" and "tileheight=" with value 1024 or so, otherwise loading of the subsets from the zoomed-in images will be very slow. RATES, paramter "ilyrrates=" if you want to display lower quality version of the image for lossless encoded master. LEVELS, parameter "numrlvls=6" is there by default.

OpenJPEG decoder:

    image_to_j2k ...

Other commercial tools such as Adobe Photoshop also support JPEG2000 file format.
Petr Pridal,
Sep 19, 2009, 12:54 PM
Petr Pridal,
Aug 21, 2012, 3:21 AM
Petr Pridal,
Aug 4, 2009, 4:08 AM
Petr Pridal,
Aug 21, 2012, 3:20 AM
Petr Pridal,
Jun 29, 2009, 12:05 AM
Petr Pridal,
Aug 6, 2012, 1:22 AM
Petr Pridal,
Sep 2, 2009, 8:00 AM