contao / image
Contao image library
Fund package maintenance!
1.2.4
2026-01-21 00:41 UTC
Requires
- php: ^7.2 || ^8.0
- ext-dom: *
- ext-gd: *
- ext-hash: *
- ext-json: *
- ext-zlib: *
- imagine/imagine: ^1.3
- symfony/deprecation-contracts: ^2.1 || ^3.0
- symfony/filesystem: ^5.4 || ^6.0 || ^7.0 || ^8.0
- symfony/polyfill-php73: ^1.27
- symfony/polyfill-php80: ^1.27
Requires (Dev)
- bamarni/composer-bin-plugin: ^1.4
- contao/imagine-svg: ^1.0
- contao/test-case: ^4.5 <4.13.51
- phpunit/phpunit: ^8.5 || ^9.5
- symfony/phpunit-bridge: ^5.4 || ^6.0 || ^7.0
- symfony/polyfill-php81: ^1.27
Suggests
- ext-exif: To support EXIF auto-rotation and preserve copyright metadata
Provides
None
Conflicts
- contao/imagine-svg: <1.0 || >=2.0
Replaces
None
This package is auto-updated.
Last update: 2026-10-03 12:05:33 UTC
README
This library provides methods to resize images based on resize configurations
and generates responsive images to be used with and srcset. It is
used in Contao to handle on-the-fly resizing of images.
Installation
php composer.phar require contao/image
Usage
Simple resize:
$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
Responsive image:
$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)', ], ] */