contao/image
Contao Image is a PHP library for generating and manipulating images for Contao projects. It provides helpers for resizing, cropping, and creating responsive image variants, integrating with Contao’s image pipeline to deliver optimized outputs.
This library provides methods to resize images based on resize configurations
and generates responsive images to be used with <picture> and srcset. It is
used in Contao to handle on-the-fly resizing of images.
php composer.phar require contao/image
$imagine = new \Imagine\Gd\Imagine();
$resizer = new Resizer('/path/to/cache/dir');
$image = new Image('/path/to/image.jpg', $imagine);
$config = (new ResizeConfiguration())
->setWidth(100)
->setHeight(100)
->setMode(ResizeConfiguration::MODE_CROP)
;
$options = (new ResizeOptions())
->setImagineOptions([
'jpeg_quality' => 95,
'interlace' => \Imagine\Image\ImageInterface::INTERLACE_PLANE,
])
->setBypassCache(true)
->setTargetPath('/custom/target/path.jpg')
;
$resizedImage = $resizer->resize($image, $config, $options);
$resizedImage->getPath(); // /custom/target/path.jpg
$resizedImage->getUrl('/custom/target'); // path.jpg
$resizedImage->getUrl('/custom/target', 'https://example.com/'); // https://example.com/path.jpg
$imagine = new \Imagine\Gd\Imagine();
$resizer = new Resizer('/path/to/cache/dir');
$pictureGenerator = new PictureGenerator($resizer);
$image = new Image('/path/to/image.jpg', $imagine);
$config = (new PictureConfiguration())
->setSize((new PictureConfigurationItem())
->setResizeConfig((new ResizeConfiguration())
->setWidth(100)
->setHeight(100)
->setMode(ResizeConfiguration::MODE_CROP)
)
->setDensities('1x, 2x')
->setSizes('100vw')
)
->setSizeItems([
(new PictureConfigurationItem())
->setResizeConfig((new ResizeConfiguration())
->setWidth(400)
->setHeight(200)
->setMode(ResizeConfiguration::MODE_CROP)
)
->setDensities('1x, 2x')
->setSizes('100vw')
->setMedia('(min-width: 900px)')
])
;
$options = (new ResizeOptions());
$picture = $pictureGenerator->generate($image, $config, $options);
$picture->getImg('/path/to');
/* [
'src' => 'cache/dir/4/image-de332f09.jpg',
'width' => 100,
'height' => 100,
'srcset' => 'cache/dir/4/image-de332f09.jpg 100w, cache/dir/4/image-9e0829dd.jpg 200w',
'sizes' => '100vw',
] */
$picture->getSources('/path/to', 'https://example.com/');
/* [
[
'src' => 'https://example.com/cache/dir/c/image-996db4cf.jpg',
'width' => 400,
'height' => 200,
'srcset' => 'https://example.com/cache/dir/c/image-996db4cf.jpg 400w, https://example.com/cache/dir/2/image-457dc5e0.jpg 800w',
'sizes' => '100vw',
'media' => '(min-width: 900px)',
],
] */
How can I help you explore Laravel packages today?