Details
Description
Currently clerezza uses Java Image IO to read images and create BufferedImages. This is done in various places such as the ImageMetaDataGenerator and the AlternativeRepresentationGenerator. However the Java ImageIO implementation can fail with some JPEGs that have certain meta data stored that does not conform exactly to JPEG specification. In order to handle such cases there should be a possibility register other libraries or implementations that generate BufferedImages and handle these cases.
I suggest to create a BufferedImageProvider OSGi service and use it in the meta data generators mentioned above. There should also be a default implementation of this service that uses Java ImageIO. Clients should then be able to register services that override this service and may have different implementations that return BufferedImages. I think it might work with the service-ranking property but I am not sure.