↻ Regenerate
Source myles-tan.jpg
Providers 16 / 16
Intervention
Imagine
Services
Cells rendered
128
Total generation time
20.53 ms
Peak memory
163.3 KB

Watermark

showing 16/16 providers

Rows scroll together horizontally · ▲ marks the fastest local provider per row and per output format (a JXL cell is never compared with an AVIF one) — CDN timings measure URL build, not generation.

bottom-right

PHP
$image->crop(600, 400)->watermark('timber-tree-green.png', Position::BottomRight, paddingX: 10, paddingY: 10, width: 25, sizeUnit: Unit::Percent)
TWIG
{{ image|crop(600, 400)|watermark('timber-tree-green.png', enum('Chainsaw\\Enum\\Position').BottomRight, paddingX=10, paddingY=10, width=25, sizeUnit=enum('Chainsaw\\Enum\\Unit').Percent)|img(alt: 'bottom-right') }}
myles-tan.jpg → 600×400
intervention-gd
bottom-right
600×400 1.24 ms 69.5 KB
intervention-imagick ▲ FASTEST JPG
bottom-right
600×400 448.4 µs 47.3 KB
intervention-vips
bottom-right
600×400 881.6 µs 163.3 KB
imagine-gd
bottom-right
600×400 602.2 µs 70.4 KB
imagine-imagick
bottom-right
600×400 578.8 µs 47.6 KB
cloudflare
— Unsupported
cloudinary
bottom-right
600×400 401.0 µs 38.2 KB
imagekit
bottom-right
600×400 423.4 µs 32.1 KB
imgix
bottom-right
600×400 344.6 µs 33.1 KB
gumlet
— Unsupported
bunny
— Unsupported
imgproxy
— Unsupported
imgproxy-pro
Disabled provider not registered
thumbor
bottom-right
600×400 390.4 µs 33.9 KB
imagor
bottom-right
600×400 366.2 µs 33.4 KB
wserv
— Unsupported

bottom-right (flush)

PHP
$image->crop(600, 400)->watermark('timber-tree-green.png', Position::BottomRight, width: 25, sizeUnit: Unit::Percent)
TWIG
{{ image|crop(600, 400)|watermark('timber-tree-green.png', enum('Chainsaw\\Enum\\Position').BottomRight, width=25, sizeUnit=enum('Chainsaw\\Enum\\Unit').Percent)|img(alt: 'bottom-right (flush)') }}
myles-tan.jpg → 600×400
intervention-gd
bottom-right (flush)
600×400 211.9 µs 24.3 KB
intervention-imagick
bottom-right (flush)
600×400 164.3 µs 24.2 KB
intervention-vips
bottom-right (flush)
600×400 152.9 µs 24.2 KB
imagine-gd ▲ FASTEST JPG
bottom-right (flush)
600×400 151.0 µs 24.2 KB
imagine-imagick
bottom-right (flush)
600×400 179.4 µs 24.2 KB
cloudflare
— Unsupported
cloudinary
bottom-right (flush)
600×400 245.0 µs 24.3 KB
imagekit
bottom-right (flush)
600×400 294.3 µs 24.3 KB
imgix
bottom-right (flush)
600×400 233.6 µs 24.3 KB
gumlet
bottom-right (flush)
600×400 210.2 µs 24.3 KB
bunny
— Unsupported
imgproxy
— Unsupported
imgproxy-pro
Disabled provider not registered
thumbor
bottom-right (flush)
600×400 238.7 µs 24.3 KB
imagor
bottom-right (flush)
600×400 233.2 µs 24.3 KB
wserv
— Unsupported

center 40%

PHP
$image->crop(600, 400)->watermark('timber-tree-green.png', Position::Center, width: 30, sizeUnit: Unit::Percent, alpha: 40)
TWIG
{{ image|crop(600, 400)|watermark('timber-tree-green.png', enum('Chainsaw\\Enum\\Position').Center, width=30, sizeUnit=enum('Chainsaw\\Enum\\Unit').Percent, alpha=40)|img(alt: 'center 40%') }}
myles-tan.jpg → 600×400
intervention-gd
center 40%
600×400 246.8 µs 24.3 KB
intervention-imagick
center 40%
600×400 167.7 µs 24.2 KB
intervention-vips ▲ FASTEST JPG
center 40%
600×400 152.4 µs 24.2 KB
imagine-gd
center 40%
600×400 189.3 µs 24.2 KB
imagine-imagick
center 40%
600×400 178.8 µs 24.2 KB
cloudflare
— Unsupported
cloudinary
center 40%
600×400 242.0 µs 24.3 KB
imagekit
center 40%
600×400 236.3 µs 24.3 KB
imgix
center 40%
600×400 254.4 µs 24.3 KB
gumlet
center 40%
600×400 214.3 µs 24.3 KB
bunny
— Unsupported
imgproxy
— Unsupported
imgproxy-pro
Disabled provider not registered
thumbor
center 40%
600×400 265.2 µs 24.3 KB
imagor
center 40%
600×400 285.7 µs 24.3 KB
wserv
— Unsupported

top-left

PHP
$image->crop(600, 400)->watermark('timber-tree-green.png', Position::TopLeft, paddingX: 10, paddingY: 10, width: 20, sizeUnit: Unit::Percent)
TWIG
{{ image|crop(600, 400)|watermark('timber-tree-green.png', enum('Chainsaw\\Enum\\Position').TopLeft, paddingX=10, paddingY=10, width=20, sizeUnit=enum('Chainsaw\\Enum\\Unit').Percent)|img(alt: 'top-left') }}
myles-tan.jpg → 600×400
intervention-gd
top-left
600×400 228.5 µs 24.3 KB
intervention-imagick
top-left
600×400 174.4 µs 24.2 KB
intervention-vips
top-left
600×400 155.0 µs 24.2 KB
imagine-gd
top-left
600×400 145.8 µs 24.2 KB
imagine-imagick ▲ FASTEST JPG
top-left
600×400 140.6 µs 24.2 KB
cloudflare
— Unsupported
cloudinary
top-left
600×400 239.7 µs 24.3 KB
imagekit
top-left
600×400 235.5 µs 24.3 KB
imgix
top-left
600×400 210.1 µs 24.3 KB
gumlet
top-left
600×400 225.6 µs 24.3 KB
bunny
— Unsupported
imgproxy
— Unsupported
imgproxy-pro
Disabled provider not registered
thumbor
top-left
600×400 222.4 µs 24.3 KB
imagor
top-left
600×400 269.0 µs 24.3 KB
wserv
— Unsupported

5%/5% padding (proportional)

PHP
$image->crop(600, 400)->watermark('timber-tree-green.png', Position::BottomRight, paddingX: 5, paddingY: 5, paddingUnit: Unit::Percent, width: 20, sizeUnit: Unit::Percent)
TWIG
{{ image|crop(600, 400)|watermark('timber-tree-green.png', enum('Chainsaw\\Enum\\Position').BottomRight, paddingX=5, paddingY=5, paddingUnit=enum('Chainsaw\\Enum\\Unit').Percent, width=20, sizeUnit=enum('Chainsaw\\Enum\\Unit').Percent)|img(alt: '5%/5% padding (proportional)') }}
myles-tan.jpg → 600×400
intervention-gd
5%/5% padding (proportional)
600×400 234.4 µs 24.3 KB
intervention-imagick
5%/5% padding (proportional)
600×400 207.0 µs 24.2 KB
intervention-vips
5%/5% padding (proportional)
600×400 178.2 µs 24.2 KB
imagine-gd
5%/5% padding (proportional)
600×400 156.0 µs 24.2 KB
imagine-imagick ▲ FASTEST JPG
5%/5% padding (proportional)
600×400 143.5 µs 24.2 KB
cloudflare
— Unsupported
cloudinary
5%/5% padding (proportional)
600×400 282.8 µs 24.3 KB
imagekit
— Unsupported
imgix
— Unsupported
gumlet
— Unsupported
bunny
— Unsupported
imgproxy
— Unsupported
imgproxy-pro
Disabled provider not registered
thumbor
5%/5% padding (proportional)
600×400 233.8 µs 24.3 KB
imagor
5%/5% padding (proportional)
600×400 233.3 µs 24.3 KB
wserv
— Unsupported

tiled

PHP
$image->crop(600, 400)->tiledWatermark('timber-tree-green.png', width: 12, sizeUnit: Unit::Percent, alpha: 25)
TWIG
{{ image|manipulate({crop: [600, 400], tiledWatermark: {0: 'timber-tree-green.png', width: 12, sizeUnit: enum('Chainsaw\\Enum\\Unit').Percent, alpha: 25}})|img(alt: 'tiled') }}
myles-tan.jpg → 600×400
intervention-gd
tiled
600×400 264.4 µs 24.3 KB
intervention-imagick
tiled
600×400 175.0 µs 24.2 KB
intervention-vips ▲ FASTEST JPG
tiled
600×400 157.2 µs 24.2 KB
imagine-gd
tiled
600×400 234.4 µs 24.2 KB
imagine-imagick
tiled
600×400 225.3 µs 24.2 KB
cloudflare
— Unsupported
cloudinary
tiled
600×400 237.9 µs 24.3 KB
imagekit
— Unsupported
imgix
tiled
600×400 225.7 µs 24.3 KB
gumlet
tiled
600×400 217.6 µs 24.3 KB
bunny
— Unsupported
imgproxy
— Unsupported
imgproxy-pro
Disabled provider not registered
thumbor
tiled
600×400 259.7 µs 24.3 KB
imagor
tiled
600×400 257.4 µs 24.3 KB
wserv
— Unsupported

tiled + gap (local only)

PHP
$image->crop(600, 400)->tiledWatermark('timber-tree-green.png', width: 10, sizeUnit: Unit::Percent, alpha: 30, gapX: 6, gapY: 6, gapUnit: Unit::Percent)
TWIG
{{ image|manipulate({crop: [600, 400], tiledWatermark: {0: 'timber-tree-green.png', width: 10, sizeUnit: enum('Chainsaw\\Enum\\Unit').Percent, alpha: 30, gapX: 6, gapY: 6, gapUnit: enum('Chainsaw\\Enum\\Unit').Percent}})|img(alt: 'tiled + gap (local only)') }}
myles-tan.jpg → 600×400
intervention-gd
tiled + gap (local only)
600×400 190.5 µs 24.3 KB
intervention-imagick
tiled + gap (local only)
600×400 184.5 µs 24.2 KB
intervention-vips
tiled + gap (local only)
600×400 158.8 µs 24.2 KB
imagine-gd ▲ FASTEST JPG
tiled + gap (local only)
600×400 152.4 µs 24.2 KB
imagine-imagick
tiled + gap (local only)
600×400 173.3 µs 24.2 KB
cloudflare
— Unsupported
cloudinary
— Unsupported
imagekit
— Unsupported
imgix
— Unsupported
gumlet
— Unsupported
bunny
— Unsupported
imgproxy
— Unsupported
imgproxy-pro
Disabled provider not registered
thumbor
— Unsupported
imagor
— Unsupported
wserv
— Unsupported

without(Watermark)

PHP
$image->crop(400, 300)->watermark('timber-tree-green.png', Position::BottomRight, paddingX: 10, paddingY: 10, width: 20, sizeUnit: Unit::Percent)->without(Watermark::class)
TWIG
{{ image|manipulate({crop: [400, 300], watermark: {0: 'timber-tree-green.png', 1: enum('Chainsaw\\Enum\\Position').BottomRight, paddingX: 10, paddingY: 10, width: 20, sizeUnit: enum('Chainsaw\\Enum\\Unit').Percent}, without: 'Chainsaw\\Manipulator\\Watermark'})|img(alt: 'without(Watermark)') }}
myles-tan.jpg → 400×300
intervention-gd
without(Watermark)
400×300 185.0 µs 24.3 KB
intervention-imagick
without(Watermark)
400×300 152.3 µs 24.2 KB
intervention-vips
without(Watermark)
400×300 163.4 µs 24.2 KB
imagine-gd
without(Watermark)
400×300 162.6 µs 24.2 KB
imagine-imagick ▲ FASTEST JPG
without(Watermark)
400×300 150.7 µs 24.2 KB
cloudflare
without(Watermark)
400×300 221.8 µs 24.2 KB
cloudinary
without(Watermark)
400×300 255.4 µs 24.3 KB
imagekit
without(Watermark)
400×300 230.6 µs 24.3 KB
imgix
without(Watermark)
400×300 197.3 µs 24.3 KB
gumlet
without(Watermark)
400×300 202.7 µs 24.3 KB
bunny
without(Watermark)
400×300 226.2 µs 24.3 KB
imgproxy
without(Watermark)
400×300 245.0 µs 24.3 KB
imgproxy-pro
Disabled provider not registered
thumbor
without(Watermark)
400×300 239.7 µs 24.3 KB
imagor
without(Watermark)
400×300 242.0 µs 24.3 KB
wserv
without(Watermark)
400×300 199.3 µs 24.3 KB