bartdecorte/imagick-svg

使用 Imagick 渲染 SVG

1.2.1 2022-03-19 12:08 UTC

This package is auto-updated.

Last update: 2024-09-19 19:58:18 UTC


README

Latest Version on Packagist Total Downloads run-tests License: MIT

此包解析 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)。请参阅 许可证文件 了解更多信息。