Comments Off

Here are a set of demos featuring the various viewers available for the IIPImage server. IIPZoom is flash based. IIPMooViewer uses HTML5 and javascript. JIIP is java based.

IIPZoom – Flash Viewer

Blue Marble - Next GenerationIIPZoom client showing the massive ultra-high resolution image of Blue Marble, Next Generation (86400 x 43200 pixels, RGB, 10.7GB uncompressed TIFF) courtesy of Visible Earth and the NASA Earth Observatory Team. © 2005 NASA.

Click the image to see in high resolution this small 30×20 cm 16th Century painting entitled The Lady Praying from the collection of the Louvre museum. The painting is by an unknown Flemish artist and is painted on oak panel. The image has been fully color calibrated and was scanned at a resolution of 15 pixels per mm.
Image © 2004 C2RMF

Carina NebulaClick the image to zoom into this beautiful 29566 x 14321 pixel Hubble telescope image of star birth in the Carina Nebula. This image mosaic was assembled from 48 frames taken with Hubble’s Advanced Camera for Surveys for the 17th anniversary of the Hubble Space Telescope.
© NASA, ESA, N. Smith (University of California, Berkeley), and The Hubble Heritage Team (STScI/AURA)

Madonna with the Blue DiademThis painting by Raphael and his pupil Gianfrancesco Penni entitled Madonna with the Blue Diadem (1510-1511, oil on panel, 68.0 x 48.5 cm, musée du Louvre) was scanned in ultra high resolution at almost 600dpi (23 pixels/mm) at the C2RMF resulting in a stunning 11539×16236 pixel (187 mega pixels) color calibrated image.
Image © 2010 C2RMF

Watermarking ExampleExample showcasing the new dynamic watermarking feature introduced in version 0.9.9 of the server. A watermark image can be applied on-the-fly by the server to each individual image tile without requiring any modification to the original source image. The opacity and probability distribution of this watermark can also be configured in the server. Image courtesy of NASA/JPL-Caltech: Cassini during Saturn Orbit Insertion, 14400 x 9600 pixels.

IIPMooViewer – HTML5 Viewer

IIPImage powered interactive online web application created for a special exhibition organized by the Louvre Museum and the City of Milan featuring the painting of Saint John the Baptist by Leonardo da Vinci. The online application allowing the user to explore in unprecedented detail the high resolution scientific photography of the painting. Images © C2RMF.

Louvre Museum, Paris HTML5 based IIPMooViewer for panorama of the Louvre Museum, Paris.

IIPMooViewer 1.1 based advanced multispectral visualization and image blending application showing an anonymous 16th Century painting entitled “The Lady Praying”. The application shows the spectral reflectance curve at each point and allows the user to blend between colour, raking light, infra-red, ultra-violet and X-ray images.

18000×18000 pixel view of the Orion nebula as taken by the Advanced Camera for Surveys (ACS) aboard NASA’s Hubble Space Telescope. © 2004-2005 NASA, ESA. Credit: M. Robberto (Space Telescope Science Institute/ESA) and the Hubble Space Telescope Orion Treasury Project Team.

Jiip – Java Viewer

Pinwheel Galaxy Java Viewer for the 12392×15852 pixel view of the gigantic Pinwheel Galaxy (M 101) taken by the Hubble Space Telescope.
© 2006 ESA/NASA.

3rd Party Clients

Bonneville Crater PanoramaThe IIPImage server is also compatible with several 3rd party protocols and clients. In particular, Zoomify and Deepzoom.

This example using Zoomify shows a 360 degree image of Bonneville Crater taken by the panoramic camera on NASA’s Mars Exploration Rover Spirit. This false-color composite is made from frames taken with the camera’s L2 (750 nanometer), L5 (530 nanometer) and L6 (480 nanometer) filters with a final resolution of 22348 x 3161 pixels. Image © 2004 NASA/JPL/Cornell

Alternatively, here is the same image streamed to the Seadragon Ajax client.

See the Links page to see a selection of examples showing IIPImage in use elsewhere around the Internet.


Comments Off

IIPImage Development

Social Networking

You can follow IIPImage on:

IIPImage Users

IIPImage is used by a large and growing list of users throughout the world. These include major museums, art galleries, national libraries, universities, archives, scientific imaging users, astronomers, medical imaging users, foundations and private companies. Here are just a few public examples:


If you are using IIPImage on a public server, please get in touch, so that we can link to you!


Comments Off

IIPImage is a client / server system. The IIPImage server streams images to the client application, typically embedded within a web page. There are several clients to choose from in either Javascript (IIPMooViewer), Flash (IIPZoom) or Java (JIIPImage). Alternatively, images can be dynamically resized, cropped and exported.


IIPMooViewer is a high performance Mootools based Ajax Javascript client. See the IIPMooViewer page for more details.


IIPZoom is a flash client with smooth fast zooming and panning. See the IIPZoom page for more details.

JIIPImage Java Client

The client is written in Java and communicates directly with the server to request portions of the image at the desired resolution. It is able to efficiently cache image tiles and provies a very fast interface to the high resolution image.


The client can either be used as an applet embedded within a web page or as a standalone application. For applet use, the following parameters must be supplied:

<pre><object classid = "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
codebase = ",5,0,0"
width="600" height="400" >
<param name="type" value = "application/x-java-applet;version=1.5" />

<param name="code" value="iipimage.jiipimage.JIIPView" />
<param name="archive" value="jiip-view.jar" />
<param name="codebase" value="." />
<param name="serverName" value="http://<em>YOUR_SERVER_HERE/fcgi-bin/iipsrv.fcgi" />
</param><param name="imageName" value="<em>/YOUR/PATH/TO/IMAGES/image.tif" />

<param name="cache" value="1000" />
<embed type = "application/x-java-applet;version=1.5" \
code = "iipimage.jiipimage.JIIPView" \
archive = "jiip-view.jar" \

codebase = "." \
width = 600 \
height = 400 \
pluginspage = "">
serverName = "http://<em>YOUR_SERVER_HERE</em>/fcgi-bin/iipsrv.fcgi" \

imageName = "<em>/YOUR/PATH/TO/IMAGES/image.tif</em>" \
cache = "1000" \
alt="Your browser understands the <applet> tag but isn't running the applet, for some reason."
Your browser is completely ignoring the </applet><applet> tag!


Alternatively, the client can be used in standalone mode like this:

java JIIPView http://address/iipsrv.fcgi /path/image.tif

Dynamic Image Export

It is also possible to dynamically export resized or cropped versions of image by using parameters in your URL with the IIP protocol CVT=JPEG. JPEG images can be instantly generated for any region within the image at the requested size. The FIF=image command specifies the absolute path to the image on the server machine and WID=width or HEI=height specify the width or height respectively. In the following example, a JPEG image of 400 pixels in width is generated from a source TIFF image located at /tmp/test.tif on the IIP server machine:

<img src="/fcgi-bin/iipsrv.fcgi?FIF=/tmp/test.tif&WID=400&CVT=jpeg" />

Alternatively, forms can be used to give the user some choice over the final image size and JPEG quality. In this case, simply create form inputs with the values for FIF, WID, QLT and CVT. For example:

<form action="/fcgi-bin/iipsrv.fcgi" method="post">
  <input type="hidden" name="FIF" value="/tmp/test.tif" />
  <input type="text" name="WID" />
  <input type="text" name="QLT" />
  <input type="hidden" name="CVT" value="JPEG" />

To specify a particular region, use the RGN=left,top,width,height command where the left,top,width and height are defined as floating point numbers between 0 and 1. So, if you want the image to be the middle 50% of the image, use:

<img src="/fcgi-bin/iipsrv.fcgi?FIF=/tmp/test.tif&WID=400&RGN=0.25,0.25,0.5,0.5&CVT=jpeg"/>

3rd Party Viewers

The IIPImage server can also be used with a number of other 3rd party viewers. The server can be used with any viewer that supports either the Zoomify and DeepZoom protocols. For Zoomify-based clients, use an image path of the form:


For DeepZoom, add a .dzi suffix to the path name:



Comments Off

Internet Imaging Protocol

The protocol for communication between the client and server is based on the Internet Imaging Protocol (though the latest version of the server also supports the Deepzoom and Zoomify protocols – see below for more details). This protocol was initially developed by the now defunct DIG (Digital Imaging Group) consortium to allow high resolution images to be easily streamed over the internet. The protocol is a simple request-reponse protocol allowing access to individual tiles, processed image views or image metadata and was designed around the tiled multi-resolution Flashpix format. Using this protocol allows the IIPImage server and clients to inter-operate with other IIP-based client-server systems. The IIPImage server supports the main subset of the full protocol (version 1.0.5) and, in addition, several extensions to handle complex image types such as 3D object sequences, multispectral images and surface elevations etc.

A typical request is of the form:

=> OBJ=IIP,1.0&FIF=/path/image.tif&JTL=1,0

where FIF is the path to the image on the server and JTL is the request for a single JPEG compressed tile, specifically tile 0 from resolution number 1.

To request an export in JPEG format at a particular width, use the CVT=jpeg command together with WID=width:

=> FIF=/path/image.tif&WID=400&CVT=jpeg

To request the export of a region at a particular size within an image, use the RGN=left,top,width,height command where the left,top,width and height are defined as floating point numbers between 0 and 1. So, if you want the image to be the middle 50% of the image, use:

=> FIF=/tmp/test.tif&WID=400&RGN=0.25,0.25,0.5,0.5&CVT=jpeg

Protocol Extensions

There are several extensions to the IIP protocol to allow tiles of different sizes to be used and to inform the client what vertical and horizontal sequences of an object exist.

  • Tile-size: The horizontal and vertical size of the image tiles. eg. “64 64″. The IIP specification limits the tiles to 64×64 pixels. However, the IIPImage server and client are able to handle tiles of any size.
  • Horizontal-views: A list of space-separated horizontal angles (degrees) available. eg. “0 90 180 270″. If there is only a single image, zero is returned.
  • Vertical-views: A list of space-separated vertical angles (degrees) available. The angles are defined from the vertical plane, so a view from directly below the image is zero, directly facing the object is 90 and from directly overhead 180. eg. “0 90 180″. If there is only a single image, 90 is returned.
  • SHD: (iipsrv version 0.9.7 and later) Simulated hill-shading for image normal data. The argument is the angle of incidence of the light source in the horizontal plane (from 12 o’clock) comma-separated with the vertical angle of incidence with 0 representing a horizontal direction and -1 vertically downwards.
  • LYR: (iipsrv version 0.9.9 and later) The number of quality layers in an image to decode. This is for file types that can contain multiple quality layers, such as JPEG2000. For example, a request for LYR=3 will decode only the first 3 quality layers present in the image. The number of layers decoded will be limited to a maximum given by the MAX_LAYERS environment variable if this has been set in the server configuration. This can be useful to either limit the quality of the images users may see or to speed up decoding by only decoding the faster lower quality layers.
  • GAM: (iipsrv version 1.0 and later) The gamma to apply to the image.

Deepzoom and Zoomify Protocols

As of version 0.9.8, the IIPImage server can now serve images using either the Deepzoom or Zoomify protocols, thereby allowing the use of these clients while maintaining the benefits of having a full imaging server with single TIFF or JPEG2000 files.

In order to use a Zoomify client with the iipsrv, use a path of the form:


And for Deepzoom (you must add a .dzi suffix to the end of your TIFF or JPEG2000 file path – do not change the name of the TIFF file itself):



Comments Off


IIPImage is an advanced high-performance feature-rich image server system for web-based streamed viewing and zooming of ultra high-resolution images. It is designed to be fast and bandwidth-efficient with low processor and memory requirements. The system can comfortably handle gigapixel size images as well as advanced image features such as both 8, 16 and 32 bit depths, CIELAB colorimetric images and scientific imagery such as multispectral images.

Streaming is tile-based, making it possible to view, navigate and zoom in real-time around gigapixel size images that would be impossible to download and manipulate on the local machine. It also makes the system very scalable as the number of image tile downloads will remain the same regardless of the size of the source image.

Source images can be in either TIFF or JPEG2000 format. Whole images or regions within images can also be rapidly and dynamically resized and exported by the server from a single source image without the need to store multiple files in various sizes.

IIPMooViewer 2.0 with streamed 14400 x 9600 pixel image

See demo page to see some more examples of use. IIPImage is used around the world by a wide variety of users including museums, scientific imaging, astronomy, medical imaging, geographical information systems and many many others. See also our links page for examples or read more about the history of IIPImage.


  • Fast lightweight Fast CGI server module that can be embedded in most web servers (Apache, IIS, Lighttpd, MyServer, Nginx etc) or used standalone
  • Several clients available – Ajax, flash, java applet etc
  • Instant dynamic generation of JPEG overviews or details at any resolution
  • Allows easy viewing of extremely large images (gigapixel size) with no significant memory requirements
  • One single image source file, not thousands of small separate files
  • Standard TIFF-based image format that can be created, read and manipulated by most image processing tools (Photoshop, ImageMagick, GIMP, VIPS etc)
  • JPEG2000 support
  • 8, 16 or 32 bits per channel image handling
  • Greyscale, sRGB and CIE L*a*b* colour spaces
  • Multispectral imaging
  • Image blending
  • Multi-protocol with support for the IIP, Zoomify and DeepZoom protocols
  • Dynamic watermarking
  • Support for Memcached, a distributed memory object caching system
  • Secure image distribution: only JPEG-compressed views of the image are sent to the client. The full-resolution image does not need to be accessible
  • Panoramic 3D object image sequences

Latest News

See the blog for the latest news, tutorials, guest posts and more!

Latest articles: The Cranach Digital Archive, IIPImage now an Official Fedora, Redhat and CentOS Package and Using IIPImage to serve dynamic responsive images.

Follow the latest IIPImage news also via Twitter, our Facebook page or subscribe to our RSS news feed or subscribe to news by email.

Finding Out More

To find out more, see the documentation. See this overview to help you get started.

Next Entries »

Flattr this

Donations appreciated Bookmark and Share
Get IIPImage at Fast, secure and Free Open Source software downloads