ImarisWriter open source library for storage of large images in blockwise multi-resolution format

We have built an open source library to store image data in the Imaris IMS format. The library can serve the simple purpose of writing correct IMS files for you. Or it can be useful to speed up storage from image analysis pipelines in your facility. Or it can be useful to store data directly from your microscope.

  • ImarisWriter is Open source with an Apache 2.0 license.
  • ImarisWriter is easy to use: Image data in. IMS file out.
  • ImarisWriter is fast. A 100 GB image can be written in just over 1 minute on standard hardware.
  • ImarisWriter works on Windows, Mac, and Linux.
  • ImarisWriter is large data capable.

A preprint of our description of the library is here: Beati, Igor, Eliana Andreica, Peter Majer. “ImarisWriter: Open Source Software for Storage of Large Images in Blockwise Multi-Resolution Format” arXiv:2008.10311 (2020)

The source code is here:

The source code for a test application is here:

The library provides a framework for high performance writing of images in a blockwise multi-resolution format. Only about 15 percent of the code deal with IMS and HDF5. The rest of the code is for resampling, compression, histogram computation, and memory management. It is easy to extend the library to other blockwise multi-resolution formats. Feel free to add your favorite format. Or just use it as is.


Thank you @petermajer. This is a great open source contribution that will have an impact on microscopy and bioimaging. It looks like many of these routines may be useful to #ome-ngff as well. I look forward to using this library and seeing how this evolves.


This is great ! Thank you for making it open source.

A great aspect about open source code on Github is free use of their cloud build environment: Github Actions. I’ve built binary shared libraries for Windows, Mac, and Ubuntu if anyone would like to help me test them:

I’ve only tested the Windows DLLs so far. Currently you need bpImarisWriter96.dll, hdf5.dll, and zlib.dll to make the library work. LZ4 is currently linked in statically. I am not sure how compatible this is yet with the system hdf5 and zlib libraries distributed on Mac and Ubuntu.


Dear @petermajer, sorry if this question may be a bit naiive, but can the writer also read Imaris files? In the example I could see the writing part but not a reading component. Is there a way to get back the data from the file?

1 Like

There are some existing technologies to read Imaris files:

The real value add of the ImarisWriter code release is a multithreaded writer with compression.

Thanks @markkitt! But I find additional value in having the “official” source code from the manufacturer. It tends to be more robust in corner cases, and can offer the one or other added value that does not seem obvious at first sight. Last, not least, the license of ImarisWriter is relatively liberal. I hope future code keeps it that way.


Thanks for the question @emmenlau. Thanks for the pointer to an existing IMS reader @markkitt.

The ImarisWriter library is just a writer library. It doesn’t provide functionality for reading. I very much understand your wish for a reader and I will take it as a vote for an ImarisReader. A reader and a writer together would make a nice package. In particular for anyone interested in using ImarisWriter for image analysis pipelines.


Thanks for sharing ImarisWriter with the community!

@petermajer are there any Java bindings for ImarisWriter?

Hi @imagejan
We have not created bindings to Java or python yet. Both could be really useful of course and they would be a very nice addition.
Best wishes,


Hi @imagejan. I currently have Java Native Access bindings that I’m working on in an alpha state. I’m working on an imglib2 interface. I’ve shared the repository with you.


I’ve made Java bindings for ImarisWriter public here:

This may not be in a readily usable state since they depend on code to be merged into imglib2

I’ve also created Julia bindings here:

That uses binaries built via which are available from
Release ImarisWriter-v0.0.1+0 · JuliaBinaryWrappers/ImarisWriter_jll.jl · GitHub