A PHP package to generate Cloudflare Image Resizing URLs. based on Cloudflare Image Resizing.
Requires PHP 8.2+
composer require aneeskhan47/php-cloudflare-image-resizing
Cloudflare Image Resizing is a feature that allows you to resize, crop, and convert images by simply changing the URL of the image. This is done by adding a set of image transformation parameters to the URL of the image, which Cloudflare will then use to generate a new image on the fly.
So just by adding /cdn-cgi/image/
to the beginning of the URL, you can utilize Cloudflare's image resizing feature.
You can convert and resize images by requesting them via a specially-formatted URL. This way you do not need to write any code, only change HTML markup of your website to use the new URLs.
For more information, please see the Cloudflare Image Resizing documentation.
This package provides a fluent API to generate Cloudflare Image Resizing URLs.
use AneesKhan47\CloudflareImageResizing\CFImageResizing;
$url = 'https://example.com/uploads/2023/image.jpg';
$image = CFImageResizing::make($url)->build();
// output:
// https://example.com/cdn-cgi/image/format=auto/uploads/2023/image.jpg
// note: format=auto is added by default to the URL as it is required
// by Cloudflare to have atleast one transformation applied.
use AneesKhan47\CloudflareImageResizing\CFImageResizing;
$url = 'https://example.com/uploads/2023/image.jpg';
$image = CFImageResizing::make($url)
->width(300)
->height(300)
->webp()
->quality(80)
->build();
// output:
// https://example.com/cdn-cgi/image/width=300,height=300,format=webp,quality=80/uploads/2023/image.jpg
Transformation | Description | Cloudflare Docs |
---|---|---|
anim(bool) |
Whether to animate the image | Docs |
background(string) |
Background color in CSS format (hex, rgb, rgba, hsl, hsla) | Docs |
blur(int) |
Blur radius between 1 (slight blur) and 250 (maximum) | Docs |
brightness(string) |
Value of 1.0 equals no change, 0.5 equals half brightness, 2.0 equals twice as bright | Docs |
compression(string) |
Compression value | Docs |
contrast(float) |
Value of 1.0 equals no change, 0.5 equals low contrast, 2.0 equals high contrast | Docs |
dpr(int) |
Device pixel ratio multiplier for width/height | Docs |
fit(string) |
Fit mode (scale-down, contain, cover, crop, pad) | Docs |
format(string) |
Output format (avif, webp, jpeg, baseline-jpeg, json) | Docs |
avif() |
Set the format to avif. alias for format('avif') . |
Docs |
webp() |
Set the format to webp. alias for format('webp') . |
Docs |
jpeg() |
Set the format to jpeg. alias for format('jpeg') . |
Docs |
baselineJpeg() |
Set the format to baseline-jpeg. alias for format('baseline-jpeg') . |
Docs |
json() |
Set the format to json. alias for format('json') . |
Docs |
gamma(float) |
Value of 1.0 equals no change, 0.5 darkens, 2.0 lightens | Docs |
gravity(string) |
Cropping gravity (auto, left, right, top, bottom) | Docs |
height(int) |
Height in pixels | Docs |
metadata(string) |
Metadata preservation mode (keep, copyright, none) | Docs |
onerror(string) |
Error handling mode (redirect, none) | Docs |
quality(int) |
Quality between 1 (lowest) and 100 (highest) | Docs |
rotate(int) |
Rotation degrees (90, 180, or 270) | Docs |
saturation(float) |
Value of 1.0 equals no change, 0.5 equals half saturation, 2.0 equals twice as saturated | Docs |
sharpen(float) |
Sharpening strength between 0 (none) and 10 (maximum) | Docs |
trim(string) |
Trim values in format "top;right;bottom;left" | Docs |
width(int) |
Width in pixels | Docs |
π§Ή Keep a modern codebase with Pint:
composer lint
β Run refactors using Rector
composer refacto
βοΈ Run static analysis using PHPStan:
composer test:types
β Run unit tests using PEST
composer test:unit
π Run the entire test suite:
composer test
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
If you discover any security-related issues, please email kingkhan2388@gmail.com instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.
This package was generated using the Skeleton PHP by Nuno Maduro.