Image processing API

With the release of Sitefinity CMS 6.1 image processing is now easier and open for extensions. You can benefit from image processing not only to generate image and video thumbnails but in many other places. 

The cornerstone of the image transformations is the IImageProcessor interface and its default implementation ImageProcessor.

IImageProcessor

This interface describes the available processing operations that could be used in Sitefinity CMS. It contains two methods - Resize and ProcessImage that should be implemented in order the Sitefinity CMS backend to operate smoothly.

ImageProcessor

This class represents the default implementation of IImageProcessor interface and it is registered in ObjectFactory (IoC) Container and can be changed with other one. It has 3 image processing methods. They are described below with their arguments.

Resize(Image sourceImage, FitToAreaArguments args)

Resizes the image by keeping the ratio between width and height and not overflowing the max limits specified. The FitToAreaArguments class is used to define the Resize method argument for specifying the desired resize options.

Resize (Resize(Image sourceImage, FitToSideArguments args))

Resizes the specified source image by changing one of the sides (width or height) to the desired size and the other side proportionally (keeping the ratio). FitToSideArguments class is used to define the Resize method argument for specifying the desired resize options.

Crop(Image sourceImage, CropArguments args)

It resizes the side with smaller change keeping the ratio width/height and cuts the other side from both sides (to preserve the center of the image) to satisfy the desired width and height. CropArguments class is used to define the Crop method argument for specifying the desired cropping options

Image Processing Methods Metadata

You should mark each processing method with Attributes that provide additional information in order to be used by Sitefinity CMS successfully. Below are the different types responsible for the image processing metadata.

ImageProcessingMethod

This class encapsulates the meta-data about image processing method. It holds information about method arguments and gives the ability to create new instance of the argument object, to parse and serialize, validate from/to string the image processing parameters.

ImageProcessingProperty

Defines the metadata for the particular property used as a parameter for the image processing method.

ImageProcessingMethodAttribute

This attribute marks the image processing methods that can be used in Sitefinity CMS. If you extend the ImageProcessor class you must mark your custom image processing methods with this attribute. All methods like this will be discovered and exposed automatically for thumbnail generation.

ImageProcessingPropertyAttribute

This attribute specifies the image processing argument for the transformation method. Each property that should be passed as argument to the processing method should be marked with this attribute.

Image Processing Errors/Exceptions

When the image processing fails for some reason there are types that store the information about the error.

ImageProcessingException

Represents the exception that is thrown when the image processing fails. It contains the processing error information.

ImageProcessingError

This enumeration contains the specific reason for the image processing error. There are two reasons specified:

MethodNotFound - The generation method could not be found.
MethodGenerationError - Internal image processing error. The method for generation is executed and throws an error.

In the code snippet below you can see a demonstration of a class that extends the default ImageProcessor and adds a new image processing method:



Was this article helpful?