bartdecorte / imagick-svg
使用 Imagick 渲染 SVG
1.2.1
2022-03-19 12:08 UTC
Requires
- php: ^8.0
- ext-imagick: ^3.6
- ext-xmlreader: *
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.7
- phpunit/phpunit: ^9.5
README
此包解析 SVG 文件并在 ImagickDraw 实例上执行这些操作。
安装
composer require bartdecorte/imagick-svg
支持的 SVG 功能
此包目前不支持完整的 SVG 标准(尚不支持)。然而,通过在输入前调整 SVG 文件,大多数 SVG 应该可以正确渲染。
一些提示
- 将内部 CSS 和内联样式转换为呈现属性
- 扩展所有元素(包括描边)
我打算在不久的将来扩展支持,欢迎提出问题请求功能,或者更好的是,提交一个拉取请求。
元素
- rect
- circle
- ellipse
- polygon
- path
- g
属性
- transform
- fill
内部 CSS 和内联样式
目前不支持,请使用呈现属性
用法
<?php require __DIR__ . '/vendor/autoload.php'; use BartDecorte\ImagickSvg\Svg; // local path or URL $svg = new Svg(__DIR__ . '/esign-logo.svg'); $draw = new ImagickDraw(); $width = 1000; $height = $width * ($svg->height() / $svg->width()); $draw->scale($width / $svg->width(), $height / $svg->height()); $draw->setStrokeAntialias(true); $draw->setTextAntialias(true); $draw = $svg->draw($draw); $imagick = new Imagick(); $imagick->newImage($width, $height, '#00000000', 'png'); $imagick->drawImage($draw); @ob_clean(); ob_start(); header('Content-Type: image/png'); print $imagick->getImageBlob(); header('Content-Length: '. ob_get_length()); ob_end_flush();
许可证
MIT 许可证(MIT)。请参阅 许可证文件 了解更多信息。