如何将svg元素添加到Imagick图像?

时间:2016-06-30 16:25:13

标签: php svg imagick

我正在尝试使用Imagick将svg文件的各个组件中的png拼凑在一起。我能够获得文本并按预期运行。现在我该如何开始添加各种svg组件。在下面的示例中,我有一个示例变量,其中包含一个表示我的svg元素的字符串。我必须使用SVG元素格式和属性,如r,有时可能由变量设置。

编辑:大图,我只是将带有动态设置的svg转换为png。

<?php

//SVG ELEMENT TO INCORPORATE
$element = '<circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />';

//MESSAGE
$message = "Get this SVG to work.";

//FILENAME
$fileName = "testSVG" . microtime(true) . ".png";

//SET THE SIZE, BACKGROUND, AND FORMAT
$image = new Imagick();
$image->newImage(1200, 630, new ImagickPixel('pink'));
$image->setImageFormat('png');

//NEW DRAW ELEMENT
$draw = new ImagickDraw();

//FONT PROPERTIES 
$draw->setFont('Impact.ttf');
$draw->setFontSize(50);
$draw->setFillColor("red");
$draw->setStrokeAntialias(true);
$draw->setTextAntialias(true);

//FONT METRICS 
$metrics = $image->queryFontMetrics($draw, $message);

//ADD TEXT TO CANVAS 
$draw->annotation(5, $metrics['ascender']+5, $message);

//DRAW THE IMAGE
$image->drawImage($draw);

//SAVE THE IMAGE 
file_put_contents($fileName, $image);

//DISPLAY THE IMAGE
header('Content-type: image/png');
echo $image;

?>

0 个答案:

没有答案