CldImage Configuration
The CldImage component provides a wide range of options for being able to easily optimize and transform images.
Note: Configuration for CldImage is the same as getCldImageUrl, which both use the same underlying API.
Required Props
The basic props required to use CldImage include:
Prop | Type | Required | Example | |
---|---|---|---|---|
alt | string | Yes | Dog catching a frisbee | More Info (opens in a new tab) |
height | number/string | Yes, unless using Next Image fill (opens in a new tab) | 600 | More Info (opens in a new tab) |
src | string | Yes | my-public-id | |
width | number/string | Yes, unless using Next Image fill (opens in a new tab) | 600 | More Info (opens in a new tab) |
Next Image Props
CldImage extends the Next.js Image component using Cloudinary tech. This means all props available on the Image component are available on CldImage. Learn more on the Next.js docs (opens in a new tab).
Using Fill
As CldImage extends Next.js Image, it's important to note the distinction between what "fill"
applies to in which context. The Next.js Image fill (opens in a new tab)
prop provides a different way of displaying the image using the native <img />
tag and CSS
while Cloudinary also provides a crop mode of fill (opens in a new tab)
which allows you to crop the resulting image file itself, while filling the containing space.
fill
or fill={true}
will opt the CldImage instance into the Next.js Image fill mode.
crop="fill"
will opt the CldImage instance into the Cloudinary crop mode of fill.
Basic Transformations
The CldImage component exposes many of Cloudinary's transformations in an easy-to-use way right inside of Next.js.
Prop | Type | Default | Example | |
---|---|---|---|---|
background | string | - | blue , rgb:0000ff | More Info (opens in a new tab) |
crop | string | limit | thumb | More Info (opens in a new tab) |
fillBackground (Beta) | boolean | object | - | {{ gravity: 'east' }} | More Info (opens in a new tab) |
gravity | string | auto | faces | More Info (opens in a new tab) |
recolor | array | object | - | ['duck', 'blue'] | More Info (opens in a new tab) |
remove | string | array | object | - | apple | More Info (opens in a new tab) |
removeBackground | boolean | string | false | true | More Info (opens in a new tab) |
replace | array | object | - | ['apple', 'banana'] | More Info (opens in a new tab) |
restore | boolean | - | true | More Info (opens in a new tab) |
zoom | string | - | 0.5 | More Info (opens in a new tab) |
zoompan | boolean | string | object | - | true | More Info (opens in a new tab) |
background
Applies a background to empty or transparent areas.
Examples
background="blue"
Learn more about the background transformation (opens in a new tab) on the Cloudinary docs.
crop
Changes the size of the delivered asset according to the requested width & height dimensions.
Examples
crop="fill"
Learn more about the crop transformation (opens in a new tab) on the Cloudinary docs.
fillBackground
Generative Fill is currently in beta.
Automatically fills the padded area using generative AI to extend the image seamlessly.
The fillBackground
prop can either be a boolean, which will use a set of safe defaults to produce
a background, or an object, which can take the following options:
Prop | Type | Example |
---|---|---|
crop | string | clpad |
gravity | string | south |
prompt | string | cupcakes |
Examples
Applying Generative Fill with defaults:
fillBackground
Customizing options:
fillBackground={{
crop: 'clpad',
gravity: 'south',
prompt: 'cupcakes'
}}
Learn more about the Generative Fill transformation (opens in a new tab) on the Cloudinary docs.
gravity
Determines which part of an asset to focus on, and thus which part of the asset to keep, when any part of the asset is cropped
Examples
gravity="face"
Learn more about gravity (opens in a new tab) on the Cloudinary docs.
recolor
Generative Recolor is currently in beta.
Uses generative AI to recolor parts of your image, maintaining the relative shading.
The recolor
prop can either be an array with the objects to be replaced or an object
with the following options:
Prop | Type | Example |
---|---|---|
multiple | boolean | true |
prompt | string | array | duck or ['duck', 'horse'] |
to | string | blue |
Examples
Recoloring an object with an array:
recolor={['duck', 'blue']}
Or using the object format:
recolor={{
prompt: 'duck',
to: 'blue',
multiple; true
}}
Learn more about the Generative Recolor transformation (opens in a new tab) on the Cloudinary docs.
remove
Generative Remove is currently in beta.
Uses generative AI to remove unwanted parts of your image, replacing the area with realistic pixels.
The remove
prop can either be a string, an array, or an object with the following options:
Prop | Type | Example |
---|---|---|
multiple | boolean | true |
prompt | string | array | duck or ['duck', 'horse'] |
removeShadow | boolean | true |
region | array | [300, 200, 1900, 3500] |
Examples
Removing an object by string:
remove="apple"
Removing multiple objects by array:
remove={['apple', 'banana', 'orange']}
Removing multiple instances of an object and their shadow with object configuration:
remove={{
prompt: 'apple',
multiple: true,
removeShadow: true
}}
Removing a region:
remove={{
region: [300, 200, 1900, 3500]
}}
Removing multiple regions:
remove={{
region: [
[300, 200, 1900, 3500],
[123, 321, 750, 500]
]
}}
Learn more about the Generative Remove transformation (opens in a new tab) on the Cloudinary docs.
removeBackground
Uses the Cloudinary AI Background Removal add-on (opens in a new tab) to make the background of an image transparent.
The Cloudinary AI Background Removal add-on is required to use this feature.
Examples
removeBackground
Learn more about background removal transformation (opens in a new tab) on the Cloudinary docs.
replace
Generative Replace is currently in beta.
Uses generative AI to replace parts of your image with something else.
The replace
prop can either be an array with the objects to be replaced or an object
with the following options:
Prop | Type | Example |
---|---|---|
from | string | apple |
to | string | banana |
preserveGeometry | boolean | true |
Examples
Replacing an object with an array:
replace={['apple', 'banana']}
Or using the object format:
replace={{
from: 'apple',
to: 'banana',
preserveGeometry; true
}}
Learn more about the Generative Replace transformation (opens in a new tab) on the Cloudinary docs.
restore
Generative Restore is currently in beta.
Uses generative AI to restore details in poor quality images or images that may have become degraded through repeated processing and compression.
The restore
prop can be used as a boolean.
Examples
restore
Learn more about the Generative Restore transformation (opens in a new tab) on the Cloudinary docs.
zoom
Controls how close to crop to the detected coordinates when using face-detection, custom-coordinate, or object-specific gravity.
Examples
zoom="0.75"
Learn more about the zoom transformation (opens in a new tab) on the Cloudinary docs.
zoompan
Also known as the Ken Burns effect, this transformation applies zooming and/or panning to an image, resulting in a video or animated GIF.
zoompan
can be applied with safe defaults as a boolean, a string, or an object for
advanced customization.
As a string, you can pass in "loop" to automatically loop, or you can pass in raw configuration using the Cloudinary Transformation syntax.
As an object, you can use advanced configuration with the following options:
Prop | Type | Example |
---|---|---|
loop | boolean | string | true |
options | boolean | string | mode_ztr;maxzoom_6.5;du_10 |
Examples
With defaults:
zoompan
Add looping:
zoompan="loop"
Customize options:
zoompan={{
loop: 'loop:2', // Will loop twice
options: 'mode_ztr;maxzoom_6.5;du_10'
}}
Learn more about the zoompan transformation (opens in a new tab) on the Cloudinary docs.
Filters & Effects
Cloudinary supports a wide variety of effects and artistic filters that help to easily change the appearance of an image.
Prop | Type | Default | Example | |
---|---|---|---|---|
art | string | - | al_dente | More Info (opens in a new tab) |
autoBrightness | boolean | string | - | true , 80 | More Info (opens in a new tab) |
autoColor | boolean | string | - | true , 80 | More Info (opens in a new tab) |
autoContrast | boolean | string | - | true , 80 | More Info (opens in a new tab) |
assistColorblind | boolean | string | - | true , 20 , xray | More Info (opens in a new tab) |
blackwhite | boolean | string | - | true , 40 | More Info (opens in a new tab) |
blur | boolean | string | - | true , 800 | More Info (opens in a new tab) |
blurFaces | boolean | string | - | true , 800 | More Info (opens in a new tab) |
blurRegion | boolean | string | - | true , 1000,h_425,w_550,x_600,y_400 | More Info (opens in a new tab) |
border | string | - | 5px_solid_purple | |
brightness | boolean | string | - | true , 100 | More Info (opens in a new tab) |
brightnessHSB | boolean | string | - | true , 100 | More Info (opens in a new tab) |
cartoonify | boolean | string | - | true , 70:80 | More Info (opens in a new tab) |
color | string | - | blue | |
colorize | string | - | 35,co_darkviolet | More Info (opens in a new tab) |
contrast | boolean | string | - | true , 100 , level_-70 | More Info (opens in a new tab) |
distort | string | - | 150:340:1500:10:1500:1550:50:1000 , arc:180.0 | More Info (opens in a new tab) |
fillLight | boolean | string | - | true , 70:20 | More Info (opens in a new tab) |
gamma | boolean | string | - | true , 100 | More Info (opens in a new tab) |
gradientFade | boolean | string | - | true , symmetric:10,x_0.2,y_0.4 | More Info (opens in a new tab) |
grayscale | bool | - | true | More Info (opens in a new tab) |
improve | boolean | string | - | true , 50 , indoor | More Info (opens in a new tab) |
multiply | bool | - | true | More Info (opens in a new tab) |
negate | bool | - | true | More Info (opens in a new tab) |
oilPaint | boolean | string | - | true , 40 | More Info (opens in a new tab) |
opacity | number/string | - | 40 | More Info (opens in a new tab) |
outline | boolean | string | - | true , 40 , outer:15:200 | More Info (opens in a new tab) |
overlay | bool | - | true | More Info (opens in a new tab) |
pixelate | boolean | string | - | true , 20 | More Info (opens in a new tab) |
pixelateFaces | boolean | string | - | true , 20 | More Info (opens in a new tab) |
pixelateRegion | boolean | string | - | true , 35,h_425,w_550,x_600,y_400 | More Info (opens in a new tab) |
redeye | boolean | string | - | true | More Info (opens in a new tab) |
replaceColor | string | - | saddlebrown , 2F4F4F:20 , silver:55:89b8ed | More Info (opens in a new tab) |
sanitize | bool | true if .svg | true - Only applies to .svg | More Info (opens in a new tab) |
saturation | boolean | string | - | true , 70 | More Info (opens in a new tab) |
screen | bool | - | true | More Info (opens in a new tab) |
sepia | boolean | string | - | true , 50 | More Info (opens in a new tab) |
shadow | boolean | string | - | true , 50,x_-15,y_15 | More Info (opens in a new tab) |
sharpen | boolean | string | - | true , 100 | More Info (opens in a new tab) |
shear | string | - | 20.0:0.0 | More Info (opens in a new tab) |
simulateColorblind | boolean | string | - | deuteranopia | More Info (opens in a new tab) |
tint | boolean | string | - | true , 100:red:blue:yellow | More Info (opens in a new tab) |
trim | boolean | string | - | true , 50:yellow | More Info (opens in a new tab) |
unsharpMask | boolean | string | - | true , 500 | More Info (opens in a new tab) |
vectorize | boolean | string | - | true , 3:0.5 | More Info (opens in a new tab) |
vibrance | boolean | string | - | true , 70 | More Info (opens in a new tab) |
vignette | boolean | string | - | true , 30 | More Info (opens in a new tab) |
Examples
Make an image black and white:
blackwhite
Pixelate an image:
pixelate
Sharpen an image:
sharpen={50}
View the Cloudinary docs (opens in a new tab) to see learn more about using effects.
Overlays & Underlays
Cloudinary gives you the ability to add layers above or below your primary asset using Overlays and Underlays.
Prop | Type | Example |
---|---|---|
overlays | array | Customizing Overlays & Underlays |
text | string | Next Cloudinary |
underlay | string | my-public-id |
underlays | array | Customizing Overlays & Underlays |
Customizing Overlays & Underlays
Note: The API for Underlays is similar to Overlays except they do not support text.
Prop | Type | Example |
---|---|---|
appliedEffects | array | effects, added as applied transformation |
effects | array | effects |
position | object | position |
publicId | string | mypublicid |
text | object|string | Next Cloudinary or See text Below |
url | string | https://.../image.jpg |
Examples
Adding an overlay:
overlays={[{
publicId: 'images/earth',
position: {
x: 50,
y: 50,
gravity: 'north_west',
},
appliedEffects: [
{
multiply: true
}
]
}]}
Adding an underlay:
underlays={[{
publicId: 'images/earth',
}]}
effects
Objects in the effects
array can include everything in Basic Transformations and Filters & Effects above as well as:
Prop | Type | Example | |
---|---|---|---|
aspectRatio | string | 3.0 | More Info (opens in a new tab) |
crop | string | 10 | More Info (opens in a new tab) |
gravity | string | north_west | More Info (opens in a new tab) |
height | number | 600 | More Info (opens in a new tab) |
width | number | 600 | More Info (opens in a new tab) |
position
The position
property can include:
Prop | Type | Example | |
---|---|---|---|
angle | number | 45 | More Info (opens in a new tab) |
gravity | string | north_west | More Info (opens in a new tab) |
x | number | 10 | More Info (opens in a new tab) |
y | number | 10 | More Info (opens in a new tab) |
The text
property can include:
Prop | Type | Example | |
---|---|---|---|
border | string | 20px_solid_blue | More Info (opens in a new tab) |
color | string | blueviolet | More Info (opens in a new tab) |
fontFamily | string | Open Sans | More Info (opens in a new tab) |
fontSize | number | 48 | More Info (opens in a new tab) |
fontWeight | string | bold | More Info (opens in a new tab) |
letterSpacing | number | 14 | More Info (opens in a new tab) |
lineSpacing | number | 14 | More Info (opens in a new tab) |
stroke | bool | true in coordination with Border | More Info (opens in a new tab) |
textDecoration | string | underline | More Info (opens in a new tab) |
Advanced
Configuration & Delivery
Prop | Type | Default | Example | |
---|---|---|---|---|
assetType | string | image | video | More Info (opens in a new tab) |
config | object | - | { url: { secureDistribution: 'spacejelly.dev' } } | More Info (opens in a new tab) |
deliveryType | string | upload | fetch | More Info (opens in a new tab) |
defaultImage | string | - | myimage.jpg | More Info (opens in a new tab) |
flags | array | - | ['keep_iptc'] | More Info (opens in a new tab) |
seoSuffix | string | - | my-image-content | More Info (opens in a new tab) |
version | number | - | 1234 | More Info (opens in a new tab) |
assetType
Configures the asset type for the delivered resource.
This defaults to an image for the CldImage component.
Examples
Create an image thumbnail from a video asset:
assetType="video"
Learn more about Asset Types (opens in a new tab) on the Cloudinary docs.
config
Allows configuration for the Cloudinary environment.
Examples
config={{
cloud: {
cloudName: 'my-cloud'
}
}}
Learn more about configuration parameters (opens in a new tab) on the Cloudinary docs.
deliveryType
Controls the delivery type of the image.
Examples
deliveryType="fetch"
Learn more about Delivery Types (opens in a new tab) on the Cloudinary docs.
defaultImage
Configures the default image to use in case the given public ID is not available.
defaultImage
must include a format / file extension.
Examples
defaultImage="myimage.jpg"
Learn more about Default Images (opens in a new tab) on the Cloudinary docs.
flags
Alters the regular behavior of another transformation or the overall delivery behavior.
The keep_iptc
flag requires not including a quality of auto. Using quality="default"
avoids setting the quality flag in the URL.
Examples
flags={['keep_iptc']}
quality="default"
Learn more about Flags (opens in a new tab) on the Cloudinary docs.
seoSuffix
Adds a dynamic, descriptive suffix to the Public ID for greater SEO control of image URLs.
Examples
seoSuffix="jellyfish-in-space"
Learn more about Dynamic SEO Suffixes (opens in a new tab) on the Cloudinary docs.
version
Controls the version defined in the delivery URL.
Examples
version="1234"
Learn more about Asset Versions (opens in a new tab) on the Cloudinary docs.
Events & Refs
Prop | Type | Example | |
---|---|---|---|
onError | function/bool | (event) => {} | More Info (opens in a new tab) |
ref | ref | Ref | More Info (opens in a new tab) |
onError
Callback that fire when an image fails to load.
Upon failure, if the resulting HTTP status is a 423 (Processing), CldImage will attempt to poll the URL until it's available, then force refresh the image instance in the DOM.
Examples
onError={() => {
alert('Image failed to load!')
}}
Learn more about onError (opens in a new tab) on the Next.js docs.
ref
Allows passing in a ref instance that will be used on the Next Image and resulting <img />
Examples
ref={myRef}
Managing Transformations
Most transformations and effects are exposed as top-level props to enable you to easily apply what you need, but you can also use the following props for more advanced and organized ways of applying transformations and effects.
Prop | Type | Default | Example | |
---|---|---|---|---|
effects | array | - | [{ background: 'blue' }] | |
preserveTransformations | string | false | true | |
rawTransformations | array | - | ['e_blur:2000'] | |
strictTransformations | boolean | - | Strict Transformations | More Info (opens in a new tab) |
transformations | string | array | - | ['my-named-transformation'] | More Info (opens in a new tab) |
effects
Applies a chain of transformation sets to an image.
Examples
effects={[
{
width: 100,
height: 100,
crop: 'fill'
},
{
opacity: 50
}
]}
preserveTransformations
Preserves transformations already applied to an image when passing in a Cloudinary URL
as the src
.
Examples
preserveTransformations
rawTransformations
Provides the ability to pass in an array of "raw" Cloudinary transformations using the Transformation URL API (opens in a new tab)
Examples
rawTransformations={['w_100', 'b_blue', 'f_auto']}
strictTransformations
Strict Transformations (opens in a new tab) gives you the ability to have more control over what transformations are permitted to be used from your Cloudinary account.
By enabling Strict Transformations, you restrict the ability to generate transformations on-the-fly requiring explicit approval through the Cloudinary dashboard.
Note: This disables optimization and responsive sizing only allowing named transformations to be applied. The width and height are not applied to the URL, but are still included on the image tag rendered to the DOM.
Examples
strictTransformations
transformations=["my-transformation"]
Learn more about Strict Transformations (opens in a new tab) on the Cloudinary docs.
transformations
Applies named transformations to the image.
Examples
transformations={['my-transformation']}
Learn more about Named Transformations (opens in a new tab) on the Cloudinary docs.
Optimization
By default, CldImage opts in any image to f_auto
and q_auto
which provide automatic
optimization through intelligent compression and by automatically delivering the most
efficient format based on the browser and device requesting the image.
You can customize and manage these properties using the options below:
Prop | Type | Default | Example | |
---|---|---|---|---|
dpr | number/string | - | 2.0 | More Info |
format | string | auto | webp | More Info |
quality | string | auto | 90 | More Info |
unoptimized | boolean | - | Unoptimized Images | More Info |
dpr
Sets the device pixel ratio (DPR) for the delivered image or video using a specified value or automatically based on the requesting device.
Examples
dpr="2.0"
Learn more about configuring DPR (opens in a new tab) on the Cloudinary docs.
format
Converts (if necessary) and delivers an asset in the specified format regardless of the file extension used in the delivery URL.
Examples
format="png"
Learn more about format (opens in a new tab) on the Cloudinary docs.
quality
Controls the quality of the delivered asset. Reducing the quality is a trade-off between visual quality and file size.
Examples
quality="10"
Learn more about quality (opens in a new tab) on the Cloudinary docs.
unoptimized
The Next.js Image component provides the ability to pass in an unoptimized (opens in a new tab) flag as a way to deliver the raw image URL without any quality, format, or size changes. When using this or the global option, the CldImage component performs the same treatment by not adding the f_auto or q_auto parameters as well as not subjecting the image to any resizing.
Examples
unoptimized