contao / imagine-svg
Contao Imagine SVG library
Fund package maintenance!
to.contao.org/donate
Installs: 2 254 228
Dependents: 9
Suggesters: 1
Security: 0
Stars: 80
Watchers: 5
Forks: 9
Open Issues: 1
Requires
- php: ^7.2 || ^8.0
- ext-dom: *
- imagine/imagine: ^1.1
Requires (Dev)
- bamarni/composer-bin-plugin: ^1.8
- composer/semver: ^3.3
- contao/test-case: ^4.4
- phpunit/phpunit: ^8.5.4
- symfony/filesystem: ^5.0
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 }