contao/imagine-svg

Contao Imagine SVG library

Package info

github.com/contao/imagine-svg

pkg:composer/contao/imagine-svg

Fund package maintenance!

to.contao.org/donate

Statistics

Installs: 3 159 067

Dependents: 12

Suggesters: 1

Stars: 86

Open Issues: 1

1.0.4 2024-10-02 10:47 UTC

Requires

Suggests

None

Provides

None

Conflicts

None

Replaces

None

LGPL-3.0-or-later 3e8c7356951a94bc8ff6338296496a2a3cd23dc4

This package is auto-updated.

Last update: 2026-05-23 17:39:06 UTC


README

πŸ‘ Image
πŸ‘ Image
πŸ‘ Image
πŸ‘ Image

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
}