contao / imagine-svg
Contao Imagine SVG library
Fund package maintenance!
to.contao.org/donate
Installs: 2 117 201
Dependents: 9
Suggesters: 1
Security: 0
Stars: 79
Watchers: 5
Forks: 9
Open Issues: 1
Requires
- php: ^7.2 || ^8.0
- ext-dom: *
- imagine/imagine: ^1.1
Requires (Dev)
- contao/easy-coding-standard: ^3.0
- contao/test-case: ^4.4
- phpstan/phpstan: ^0.12
- phpstan/phpstan-phpunit: ^0.12.8
- phpstan/phpstan-symfony: ^0.12.6
- phpunit/phpunit: ^8.5.4
- psalm/plugin-phpunit: ^0.15
- psalm/plugin-symfony: ^2.0
- slam/phpstan-extensions: ^5.0
- symfony/filesystem: ^5.0
- thecodingmachine/phpstan-strict-rules: ^0.12
- vimeo/psalm: ^4.1
README
This project implements the interfaces of Imagine and allows you to make simple modifications to SVG images. It is used in Contao to handle on-the-fly resizing of SVG images.
Installation
php composer.phar require contao/imagine-svg
Usage
use Contao\ImagineSvg\Imagine; use Imagine\Image\Box; use Imagine\Image\Point; $imagine = new Imagine(); $imagine ->open('/path/to/image.svg') ->crop(new Point(50, 50), new Box(100, 100)) ->resize(new Box(40, 40)) ->save('/path/to/thumbnail.svg') ; $image = $imagine->open('/path/to/image.svg'); $image->effects() ->gamma(1.5) ->negative() ->grayscale() ->colorize($color) ->sharpen() ->blur(2) ; $image->save('/path/to/image.svg');
Because of the nature of SVG images, the getSize()
method differs a little bit
from other implementations. You can check the return value like in this example:
use Contao\ImagineSvg\Imagine; use Contao\ImagineSvg\SvgBox; $imagine = new Imagine(); $size = $imagine->open('/path/to/image.svg')->getSize(); if (SvgBox::TYPE_NONE === $size->getType()) { // The image has no defined size } elseif (SvgBox::TYPE_ASPECT_RATIO === $size->getType()) { // The image has a relative size, $size->getWidth() and $size->getHeight() // should be treated as an aspect ratio } else { // The image has a defined size like a regular image // $size->getType() would return SvgBox::TYPE_ABSOLUTE in this case }