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

Dithering

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.

Atkinson 200

PHP
$image->crop(200, 150)->dither()
TWIG
{{ image|crop(200, 150)|dither|img(alt: 'Atkinson 200') }}
myles-tan.jpg → 200×150
intervention-gd
Atkinson 200
200×150 1.34 ms 65.1 KB
intervention-imagick ▲ FASTEST JPG
Atkinson 200
200×150 446.0 µs 47.3 KB
intervention-vips
Atkinson 200
200×150 853.9 µs 163.3 KB
imagine-gd
Atkinson 200
200×150 879.0 µs 69.7 KB
imagine-imagick
Atkinson 200
200×150 494.6 µs 47.6 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

Floyd-Steinberg 200

PHP
$image->crop(200, 150)->dither(DitherAlgorithm::FloydSteinberg)
TWIG
{{ image|crop(200, 150)|dither(enum('Chainsaw\\Enum\\DitherAlgorithm').FloydSteinberg)|img(alt: 'Floyd-Steinberg 200') }}
myles-tan.jpg → 200×150
intervention-gd
Floyd-Steinberg 200
200×150 212.7 µs 24.3 KB
intervention-imagick
Floyd-Steinberg 200
200×150 157.6 µs 24.2 KB
intervention-vips
Floyd-Steinberg 200
200×150 142.6 µs 24.2 KB
imagine-gd ▲ FASTEST JPG
Floyd-Steinberg 200
200×150 135.4 µs 24.2 KB
imagine-imagick
Floyd-Steinberg 200
200×150 153.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

Bayer 200

PHP
$image->crop(200, 150)->dither(DitherAlgorithm::Bayer)
TWIG
{{ image|crop(200, 150)|dither(enum('Chainsaw\\Enum\\DitherAlgorithm').Bayer)|img(alt: 'Bayer 200') }}
myles-tan.jpg → 200×150
intervention-gd
Bayer 200
200×150 371.3 µs 24.3 KB
intervention-imagick
Bayer 200
200×150 209.0 µs 24.2 KB
intervention-vips
Bayer 200
200×150 161.9 µs 24.2 KB
imagine-gd ▲ FASTEST JPG
Bayer 200
200×150 135.4 µs 24.2 KB
imagine-imagick
Bayer 200
200×150 139.0 µ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

Atkinson 400

PHP
$image->crop(400, 300)->dither()
TWIG
{{ image|crop(400, 300)|dither|img(alt: 'Atkinson 400') }}
myles-tan.jpg → 400×300
intervention-gd
Atkinson 400
400×300 164.3 µs 24.3 KB
intervention-imagick ▲ FASTEST JPG
Atkinson 400
400×300 140.6 µs 24.2 KB
intervention-vips
Atkinson 400
400×300 177.2 µs 24.2 KB
imagine-gd
Atkinson 400
400×300 160.0 µs 24.2 KB
imagine-imagick
Atkinson 400
400×300 145.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

Floyd-Steinberg 400

PHP
$image->crop(400, 300)->dither(DitherAlgorithm::FloydSteinberg)
TWIG
{{ image|crop(400, 300)|dither(enum('Chainsaw\\Enum\\DitherAlgorithm').FloydSteinberg)|img(alt: 'Floyd-Steinberg 400') }}
myles-tan.jpg → 400×300
intervention-gd
Floyd-Steinberg 400
400×300 162.4 µs 24.3 KB
intervention-imagick
Floyd-Steinberg 400
400×300 134.2 µs 24.2 KB
intervention-vips
Floyd-Steinberg 400
400×300 126.7 µs 24.2 KB
imagine-gd ▲ FASTEST JPG
Floyd-Steinberg 400
400×300 126.0 µs 24.2 KB
imagine-imagick
Floyd-Steinberg 400
400×300 170.7 µ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

Bayer 400

PHP
$image->crop(400, 300)->dither(DitherAlgorithm::Bayer)
TWIG
{{ image|crop(400, 300)|dither(enum('Chainsaw\\Enum\\DitherAlgorithm').Bayer)|img(alt: 'Bayer 400') }}
myles-tan.jpg → 400×300
intervention-gd
Bayer 400
400×300 182.8 µs 24.3 KB
intervention-imagick
Bayer 400
400×300 178.6 µs 24.2 KB
intervention-vips
Bayer 400
400×300 161.5 µs 24.2 KB
imagine-gd
Bayer 400
400×300 132.6 µs 24.2 KB
imagine-imagick ▲ FASTEST JPG
Bayer 400
400×300 123.4 µ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