Operations
A mandatory
operation when requesting an image.
This provides a list of optional
operations for transforming an image.
Affine
Perform an affine transform on an image. You must provide a matrix array of length 4 affine transformation matrix.
By default, new pixels are filled with a black background. You can provide a background color with the background option. A particular interpolator may also be specified via the interpolator option.
Options
Key | Type | Optional | Default |
---|---|---|---|
matrix | Array(Number) | x | n/a |
idx | Integer | ✓ | n/a |
idy | Integer | ✓ | n/a |
odx | Integer | ✓ | n/a |
ody | Integer | ✓ | n/a |
interpolator | Enum(Interpolator) | ✓ | n/a |
Blur
Blur the image. When used without options, performs a fast, mild blur of the output image.
When a sigma is provided, performs a slower, more accurate Gaussian blur.
Clahe
Perform contrast limiting adaptive histogram equalization (CLAHE)
This will, in general, enhance the clarity of the image by bringing out darker details.
Options
Key | Type | Optional | Min Value | Max Value | Default |
---|---|---|---|---|---|
width | Integer | x | 1 | n/a | n/a |
height | Integer | x | 1 | n/a | n/a |
maxSlope | Integer | ✓ | 0 | 100 | n/a |
Options
Key | Type | Optional | Min Value | Max Value | Default |
---|---|---|---|---|---|
colorspace | Enum(Colorspace) | x | n/a | n/a | n/a |
Composite
Composite an image over the base image. The image to composite must be the same size or smaller than the base image.
If both top
and left
options are provided, they take precedence over gravity
.
Options
Key | Type | Optional | Min Value | Max Value | Default |
---|---|---|---|---|---|
width | Integer | x | 3 | 1001 | n/a |
height | Integer | x | 3 | 1001 | n/a |
kernel | Array(Number) | x | n/a | n/a | n/a |
scale | Integer | ✓ | n/a | n/a | n/a |
offset | Integer | ✓ | n/a | n/a | n/a |
Example
{
"operation": "convolve",
"width": 3,
"height": 3,
"kernel": [-1, 0, 1, -2, 0, 2, -1, 0, 1]
}
Extend
Extends/pads the edges of the image with the provided background colour.
This operation will always occur after resizing and extraction, if any.
Options
Key | Type | Optional | Min Value | Max Value | Default |
---|---|---|---|---|---|
all | Integer | ✓ | n/a | n/a | 0 |
top | Integer | ✓ | n/a | n/a | 0 |
left | Integer | ✓ | n/a | n/a | 0 |
bottom | Integer | ✓ | n/a | n/a | 0 |
right | Integer | ✓ | n/a | n/a | 0 |
background | String | ✓ | n/a | n/a | '#000' |
Example
{
"operation": "extend",
"top": 42,
"bottom": 84,
"left": 16,
"right": 16,
"background": "#FFA03F"
}
Options
Key | Type | Optional | Min Value | Max Value | Default |
---|---|---|---|---|---|
top | Integer | ✓ | n/a | n/a | 0 |
left | Integer | ✓ | n/a | n/a | 0 |
bottom | Integer | ✓ | n/a | n/a | 0 |
right | Integer | ✓ | n/a | n/a | 0 |
Gamma
Apply a gamma correction by reducing the encoding (darken) pre-resize at a factor of 1/gamma then increasing the encoding (brighten) post-resize at a factor of gamma. This can improve the perceived brightness of a resized image in non-linear colour spaces.
JPEG and WebP input images will not take advantage of the shrink-on-load performance optimization when applying a gamma correction.
Grayscale
Apply a gamma correction by reducing the encoding (darken) pre-resize at a factor of 1/gamma then increasing the encoding (brighten) post-resize at a factor of gamma. This can improve the perceived brightness of a resized image in non-linear colour spaces.
JPEG and WebP input images will not take advantage of the shrink-on-load performance optimization when applying a gamma correction.
Median
Square mask size: size x size.
Note larger sizes can significantly reduce the performance of processing image e.g. a size of 15 on a 500x500 image adds around 1.5s to processing time.
Options
Key | Type | Optional | Min Value | Max Value | Default |
---|---|---|---|---|---|
brightness | Number | ✓ | 0 | n/a | n/a |
saturation | Number | ✓ | 0 | n/a | n/a |
hue | Number | ✓ | 0 | n/a | n/a |
lightness | Number | ✓ | 0 | n/a | n/a |
Recomb
Transforms the image using brightness, saturation and hue rotation.
The matrix
option is an array of 3 arrays with 3 numbers values.
Example
{
"operation": "recomb",
"matrix": [
[0.3588, 0.7044, 0.1368],
[0.299, 0.587, 0.114],
[0.2392, 0.4696, 0.0912]
]
}
Options
Key | Type | Optional | Min Value | Max Value | Default |
---|---|---|---|---|---|
width | Number | ✓ | 0 | n/a | n/a |
height | Number | ✓ | 0 | n/a | n/a |
fit | Enum(OperationResizeFit) | ✓ | n/a | n/a | 'cover' |
position | Enum(OperationResizePosition) | ✓ | n/a | n/a | 'center' |
background | String | ✓ | n/a | n/a | '#000' |
kernel | Enum(OperationResizeKernel) | ✓ | n/a | n/a | 'lanczos3' |
withoutEnlargement | Boolean | ✓ | n/a | n/a | false |
fastShrinkOnLoad | Boolean | ✓ | n/a | n/a | true |
Rotate
Rotate the output image by either an explicit angle or auto-orient based on the EXIF Orientation tag.
If an angle is provided, it is converted to a valid positive degree rotation. For example, -450 will produce a 270deg rotation. When rotating by an angle other than a multiple of 90, the background colour can be provided with the background option. If no angle is provided, it is determined from the EXIF data.
Mirroring is supported and may infer the use of a flip operation. The use of rotate implies the removal of the EXIF Orientation tag, if any.
Sharpen
Sharpen the image. When used without parameters, performs a fast, mild sharpen of the output image.
When a sigma is provided, performs a slower, more accurate sharpen of the L channel in the LAB colour space.
Separate control over the level of sharpening in "flat" and "jagged" areas is available.
Options
Key | Type | Optional | Min Value | Max Value | Default |
---|---|---|---|---|---|
sigma | Integer | ✓ | 0.01 | 1000 | n/a |
flat | Integer | ✓ | 0 | 10000 | 1.0 |
jagged | Integer | ✓ | 0 | 10000 | 2.0 |
Text
Sharpen the image. When used without parameters, performs a fast, mild sharpen of the output image.
When a sigma is provided, performs a slower, more accurate sharpen of the L channel in the LAB colour space.
Separate control over the level of sharpening in "flat" and "jagged" areas is available.
Options
Key | Type | Optional | Min Value | Max Value | Default |
---|---|---|---|---|---|
font | String | ✓ | 0.01 | 1000 | 30px sans-serif |
textAlign | Enum(textAlign) | ✓ | n/a | n/a | n/a |
textColor | String | ✓ | n/a | n/a | white |
backgroundColor | String | ✓ | n/a | n/a | n/a |
strokeWidth | Integer | ✓ | n/a | n/a | 0 |
strokeColor | String | ✓ | n/a | n/a | white |
padding | Integer | ✓ | n/a | n/a | 0 |
borderWidth | Integer | ✓ | n/a | n/a | 0 |
borderColor | String | ✓ | n/a | n/a | black |
wrap | Boolean | ✓ | n/a | n/a | n/a |
maxWidth | Integer | ✓ | n/a | n/a | n/a |
blend | Enum(Blend) | ✓ | n/a | n/a | 0 |
gravity | Enum(Gravity) | ✓ | n/a | n/a | n/a |
top | Integer | ✓ | n/a | n/a | n/a |
left | Integer | ✓ | n/a | n/a | n/a |
Threshhold
Any pixel value greater than or equal to the threshold value will be set to 255, otherwise it will be set to 0.
Tint
Tint the image using the provided chroma while preserving the image luminance.
An alpha channel if present will be unchanged by the operation.