incubator-clerezza-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Daniel Spicar (JIRA)" <>
Subject [jira] [Commented] (CLEREZZA-716) Support alternate image processing libraries for reading image data
Date Fri, 31 Aug 2012 14:02:07 GMT


Daniel Spicar commented on CLEREZZA-716:

Now there can be several ImageReader services present. 

An ImageReader simply provides methods to get BufferedImages from different input sources
(Files, InputStreams, URLs). 

Services can implement the ImageReader interface to provide Buffered Images using various
methods and libraries. 

By default there is an ImageReader service which uses javax.imageio ( to implement
the functionality. This service is called ImageIOImageReader and has a service.ranking of

There is another service: ImageReaderService. This service provides a method to dynamically
obtain the ImageReader with the highest service.ranking value. Additionally this service implements
the ImageReader interface as well and delegates the calls to the highest ranking ImageReader
service. However it is not registered in the OSGI SCR as offering the ImageReader service
so one has to bind it as ImageReaderService.

I tried to replace all instances where is used by usage of ImageReaderService.

Thus now it is possible to implement and register additional ImageReaders that provide BufferedImages
in a different way (e.g. using JAI - Java Advanced Imaging). By setting their service ranking
property to a higher value than the default 0, they will be used over the default ImageIO
service. By declaring the property explicitly not private one can even change the service
ranking via the config admin at runtime.
> Support alternate image processing libraries for reading image data
> -------------------------------------------------------------------
>                 Key: CLEREZZA-716
>                 URL:
>             Project: Clerezza
>          Issue Type: Improvement
>          Components: platform, rdf.utils
>    Affects Versions: 0.2-incubating
>            Reporter: Daniel Spicar
>            Assignee: Daniel Spicar
>            Priority: Minor
>          Time Spent: 12.5h
>  Remaining Estimate: 0h
> 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.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:

View raw message