Skip to content

Known Limitations

Jeremy Echols edited this page Oct 9, 2018 · 1 revision

Known Limitations

RAIS was built first and foremost to serve tiles for JP2s that always have multiple resolution factors ("zoom levels") and are tiled. It has been amazing for us within that context, but there are areas where it won't perform well:

Slow on huge JP2 files

Very large images (hundreds of megapixels) can take a while to decode. In some cases, 2-3 seconds per tile when load gets moderate. Unfortunately, this seems to be a limitation of JP2 decoders in general. Even when encoded perfectly, it just takes a little while to decode.

If serving up files of this size, caching may be a good idea.

Only supports RGB and Grayscale JP2s

YCC isn't supported directly (unless openjpeg does magic conversions for us, which we haven't tested). RGBa should work, but the alpha channel will be ignored. Embedded color profiles definitely don't work.

RAM usage should be monitored

Huge images and/or high traffic can cause the JP2 processor to chew up large amounts of RAM. If you use RAIS to serve up raw TIFF files, RAM usage is likely to be a massive bottleneck. The good news is that when handling tiled, multi-resolution JP2s, RAM usage tends to be fairly predictable even under a sizeable load. And RAIS scales horizontally very well.

IIIF Support isn't perfect

The IIIF support adheres to level 2 of the spec (as well as some extra features), but it isn't as customizable as we would prefer.

When you don't provide your own info.json response (as described above), the default response's quality choices are hard-coded to include color, gray, and bitonal, even for gray/bitonal images.

It should also be noted that GIF output is amazingly slow. Given that GIF output isn't even a IIIF level 2 feature, we aren't planning to put much time into troubleshooting the issue. GIFs are available if you explicitly enable them (via a capabilities file), but should probably be avoided.

Poor performance for non-JP2 files

These aren't well-tested since our system is exclusively JP2. Non-JP2 types that are supported (TIFF, JPG, PNG, and GIF) have to be read in fully and then cropped and resized within the application. This will not normally be as fast as image formats built for deep zooming (tiled JP2s for RAIS). Note, however, that for small images (5-10 megapixels), it's possible that the speediness of the image format outweighs the cost of reading it in.

As an example: TIFF files are usually fast to process, but can potentially take up a great deal of memory. Sometimes this is okay, but it's a bottleneck quickly when running a tiling server. In our limited testing, TIFFs outperform tiled JP2s only when load is extremely light.