CloudinaryProvider

Generates Cloudinary transformation URLs.

use Timber\Chainsaw\Provider\Cloudinary\CloudinaryProvider;

$provider = new CloudinaryProvider(
    cloudName: 'my-cloud',
    deliveryType: 'upload',
);

Output: https://res.cloudinary.com/{cloudName}/image/{deliveryType}/{transforms}/{source}

Manipulation support

Legend: βœ… = implemented in Chainsaw, 🟦 = available on the CDN, not exposed by Chainsaw, ❌ = not available on this CDN.

Resize & crop

Manipulation Chainsaw Availability
Width βœ… Free
Height βœ… Free
Scale βœ… Free (scale-by-factor via fractional w_/h_ + c_scale)
Cover βœ… Free (crop() alias; c_fill/c_lfill + gravity β€” compass, smart, entropy, attention, face, object-class anchors; focal throws)
ManualCrop βœ… Free
Contain βœ… Free
Pad βœ… Free
Stretch βœ… Free
CropToRatio βœ… Free (ar_* + c_fill + gravity)
PadToRatio βœ… Free (ar_* + c_pad + b_*)
Trim βœ… Free
OCR text crop 🟦 Paid (g_ocr_text)

Filters & effects

Manipulation Chainsaw Availability
Blur βœ… Free
Sharpen βœ… Free
Brightness βœ… Free
Contrast βœ… Free
Gamma βœ… Free
Pixelate βœ… Free
Greyscale βœ… Free
Sepia βœ… Free
Saturation βœ… Free (e_saturation)
Hue βœ… Free (e_hue)
Vibrance 🟦 Free (e_vibrance)
Fill light 🟦 Free (e_fill_light)
Auto brightness 🟦 Free (e_auto_brightness)
Auto color 🟦 Free (e_auto_color)
Auto contrast 🟦 Free (e_auto_contrast)
Negate / Invert βœ… Free (e_negate)
Colorize 🟦 Free (e_colorize)
Tint 🟦 Free (e_tint)
Replace color 🟦 Free (e_replace_color)
Per-channel RGB 🟦 Free (e_blue, e_red, e_green)
Improve 🟦 Free (e_improve)
Noise 🟦 Free
Vignette 🟦 Free (e_vignette)

Artistic effects

Manipulation Chainsaw Availability
Art filters (21 presets) 🟦 Free (e_art:* – al_dente, athena, audrey, aurora, hokusai, etc.)
Cartoonify 🟦 Free (e_cartoonify)
Oil paint 🟦 Free (e_oil_paint)
Vectorize 🟦 Free (e_vectorize)
Outline 🟦 Free (e_outline)
Shadow 🟦 Free (e_shadow)
Gradient fade 🟦 Free (e_gradient_fade)

Generative AI

Manipulation Chainsaw Availability
Background removal 🟦 Paid add-on (e_background_removal)
Generative fill 🟦 Paid add-on (b_gen_fill)
Generative remove 🟦 Paid add-on (e_gen_remove)
Generative replace 🟦 Paid add-on (e_gen_replace)
Generative recolor 🟦 Paid add-on (e_gen_recolor)
Background replace 🟦 Paid add-on (e_gen_background_replace)
Generative restore 🟦 Paid add-on (e_gen_restore)
AI upscale 🟦 Paid add-on (e_upscale)
Auto enhance 🟦 Paid add-on (e_auto_enhance)

Face & detection

Manipulation Chainsaw Availability
Blur faces 🟦 Free (e_blur_faces)
Pixelate faces 🟦 Free (e_pixelate_faces)
Red-eye removal 🟦 Free (e_adv_redeye)
Blur region 🟦 Free (e_blur_region)
Pixelate region 🟦 Free (e_pixelate_region)

Decoration & orientation

Manipulation Chainsaw Availability
Background βœ… Free
Border βœ… Free
Flip βœ… Free
Rotate βœ… Free; arbitrary angles supported via a_<deg> with optional b_rgb: background
AutoOrient βœ… Free; EXIF orientation applied implicitly by default
Watermark βœ… Free (layer-based compositing)
Text overlays 🟦 Free (l_text:*)
Image compositing 🟦 Free (full l_* / u_* layer system)
Opacity 🟦 Free (o_*)
Round corners 🟦 Free (r_*)

Special

Manipulation Chainsaw Availability
BlurHash ❌
ThumbHash ❌
Dither ❌
Color space conversion 🟦 Free (cs_* – sRGB, CMYK, ICC)
Distort / perspective 🟦 Free (e_distort)
Shear 🟦 Free (e_shear)
Colorblind simulation 🟦 Free (e_simulate_colorblind)
Colorblind assistance 🟦 Free (e_assist_colorblind)
Default / fallback image 🟦 Free (d_*)
3D LUT 🟦 Free (l_lut)

Encoding

Format Supported
JPEG βœ…
PNG βœ…
WebP βœ…
AVIF βœ…
GIF βœ…
Auto format βœ…
Quality βœ…

Notes

  • Color encoding – uses rgb: prefix (e.g. b_rgb:3b82f6).
  • Border – all three BorderType variants render at the requested output size. Expand emits the native bo_ (the canvas grows by 2Γ—width per axis). Shrink pre-shrinks the constrained dims so the expanding bo_ lands back on the requested box (content shrinks to make room). Overlay keeps the subject at full crop scale via a chained c_crop that trims inward by 2Γ—width before bo_ grows it back, so the border paints over the outer band rather than resizing the content. Overlay needs both dimensions from an upstream box resize (crop/cover/pad/stretch, or width()+height()) and throws UnsupportedManipulator otherwise.
  • Blur – e_blur = min(2000, radius Γ— 50). Cloudinary’s e_blur renders exactly 100Γ— a gaussian sigma (measured, linear across its 100…2000 range), so Γ—50 targets the Οƒ β‰ˆ radius/2 anchor shared across providers; the 2000 ceiling saturates strength at Οƒ 20 above blur(40).
  • Gamma – Cloudinary e_gamma is a percentage in -50..150 (default 0 = unchanged). Chainsaw’s multiplier is translated as pct = round((gamma - 1) * 100) and clamped; gamma(1.0) β†’ e_gamma:0, gamma(2.2) β†’ e_gamma:120, gamma(5.0) β†’ e_gamma:150 (saturated).
  • Watermark – uses Cloudinary’s layer system with l_fetch: and base64-encoded URLs. Supports overlay positioning, sizing, and opacity via chained transformation segments.
  • Watermark fit – the overlay crop mode carries the fit: Contain β†’ c_fit (fits inside the box keeping aspect), Stretch β†’ c_scale (distorts to the box), Fill/Crop β†’ c_fill (covers the box and crops the overflow).
  • Flip – Both direction only applies horizontal flip (Cloudinary limitation).
  • URL signing – optional HMAC signing with apiSecret and a UrlSignerInterface (produces s--AbCdEfGh-- prefix).
  • Cloudinary has the largest feature set of any CDN provider, especially with its paid AI add-ons.