Serve deepzoom images from a zip archive with openseadragon

vips is a fast image processing system. Version higher than 7.40 can generate static tiles of big images in deepzoom format, saving them directly into a zip archive.

Simple as: $ vips dzsave big.jpg
(note: if you compile vips, verify to have libgsf1-dev installed)

A zip archive is more convenient than having thousand of small image files sparsed into a filesystem, so i was thinking a simple way to serve it with openseadragon directly from zip, without extracting.
In my desire to learn better Go, i’ve built this deepzoom-osd-server, a static web application that embeds openseadragon.


install gom package manager

$ go get

clone and compile

$ git clone
$ cd deepzoom-osd-server
$ make

The Makefile will download the latest binary of openseadragon, then bundle all dependencies into _vendor, then build the binary embedding all static assets (with nrsc)


$ ./deepzoom-osd-server
-- missing dzi directory, creating.
-- running on

Now you can generate some deepzoom images and put them into the dzi directory just created.

The server will expose:

  • a /dzi endpoint to explore the content of the zip archive

  • a /view endpoint with openseadragon

deepzom screenshot

This is an experiment, i’m not sure if is a sane idea to use for real things, i should stress the application (with ab or vegeta) and monitor its memory consumption.

Anyhow, if you are curating a digital library today and you need to publish big high quality images, absolutely you should look at IIIF specs, and use a more suitable server like IIPImage or Loris.