TAMULib / cantaloupe

High-performance dynamic IIIF image server in Java
https://medusa-project.github.io/cantaloupe/
Other
0 stars 0 forks source link

Make sure desired build-time/system-level dependencies are available and working in the docker container for images (pictures). #5

Open kaladay opened 1 month ago

kaladay commented 1 month ago

The processor.selection_strategy = AutomaticSelectionStrategy setting is supposed to make the best decision in general based on formats.

There are some built-time/system-level dependencies that must be resolved for this to work with some of the recommended formats.

The TurboJPEG is recommended against and is only recommended as a last resort according to the Cantaloupe documentation. (This is only supported via libjpeg-turbo for only version 2.0.2 where other versions even newer are not supported.)

The Kakadu is supposed to be really fast but is proprietary and requires licensing (and also build-time/system-level dependencies).

The OpenJPEG is considered a good alternative to Kakadu that is not proprietary but also requires built-time/ssytem-level dependencies.

JDK's processing of a TIFF is strict and may fail on non-compliant TIFFs. OpenJPEG, Kakadu, and Grock may better handle non-compliant TIFFs as well as more features of a TIFF.

OpenJpegProcessor uses the OpenJPEG codec, which is one of the fastest open-source JPEG2000 codecs.

To use this processor, OpenJPEG must be installed. The OpenJPEG binaries will automatically be detected if they are on the path; otherwise, set the OpenJpegProcessor.path_to_binaries configuration key to the absolute path of the containing directory. The LD_LIBRARY_PATH environment variable will also need to be set to locate the OpenJPEG shared library.

We may want to consider GROK as well:

To use this processor, Grok must be installed. The Grok binaries will automatically be detected if they are on the path; otherwise, set the GrokProcessor.path_to_binaries configuration key to the absolute path of the containing directory. The LD_LIBRARY_PATH environment variable will also need to be set to locate the Grok shared library.

A reason not to use Grok:

see: https://cantaloupe-project.github.io/manual/5.0/processors.html#Supported%20Source%20Formats see: https://cantaloupe-project.github.io/manual/5.0/processors.html#Supported%20Features see: https://cantaloupe-project.github.io/manual/5.0/processors.html#OpenJpegProcessor see: https://cantaloupe-project.github.io/manual/5.0/processors.html#KakaduNativeProcessor see: https://github.com/TAMULib/cantaloupe/issues/2 see: https://github.com/TAMULib/cantaloupe/issues/3