https://github.com/contao/image
Contao Image Library
https://github.com/contao/image
cms contao image php resizer
Last synced: about 1 year ago
JSON representation
Contao Image Library
- Host: GitHub
- URL: https://github.com/contao/image
- Owner: contao
- Created: 2016-02-22T15:46:58.000Z (over 10 years ago)
- Default Branch: 1.x
- Last Pushed: 2025-02-25T14:42:07.000Z (over 1 year ago)
- Last Synced: 2025-05-26T04:48:47.842Z (about 1 year ago)
- Topics: cms, contao, image, php, resizer
- Language: PHP
- Homepage:
- Size: 398 KB
- Stars: 13
- Watchers: 8
- Forks: 5
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
Contao image library
====================
[](https://github.com/contao/image/actions?query=branch%3A1.x)
[](https://codecov.io/gh/contao/image)
[](https://packagist.org/packages/contao/image)
[](https://packagist.org/packages/contao/image)
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][1] to handle on-the-fly resizing of images.
Installation
------------
```sh
php composer.phar require contao/image
```
Usage
-----
### Simple resize:
```php
$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:
```php
$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)',
],
] */
```
[1]: https://contao.org