contao / imagine-svg
Contao Imagine SVG library
Fund package maintenance!
1.0.4
2024-10-02 10:47 UTC
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
Suggests
None
Provides
None
Conflicts
None
Replaces
None
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 }