Hi,
I’ve created a plugin to allow Orthanc to import, store and decode DICOM instances in JPEG-XL format. This format has been recently added to the DICOM standard (DICOM PS3.5 2025e) and has a number of benefits, including high bitdepth support (up to 16 bit RGB/greyscale) and very good lossy and lossless compression, with the option of progressive decoding.
The plugin provides both decode and transcode callbacks, so that Orthanc can transcode from an uncompressed or other compressed transfer syntax to JPEG-XL, as well as decode and display instances in the web viewer(s), or provide them to a client as that also understands JPEG-XL in a compressed format.
The plugin uses the reference encoder/decoder libjxl, however there are other decoder implementations, for example jxl-oxide that provide even better progressive decompression support (ie render an image with less data transferred). dcmtk is used to read and write the container.
There is a small patch (included in the repository) to add the JPEG-XL transfer syntaxes to Orthanc’s headers and DICOM conformance statement.
Please have a look and let me know any feedback, suggestions or concerns.