如何在php中用imagick裁剪svg图像?

时间:2012-03-26 15:20:56

标签: php svg imagick

我有SVG图像,右侧和底部有很多空白区域。如何使用PHP和imagick裁剪图像(给定固定大小,所有图像将具有相同的大小),并将它们保存回相同的文件?

2 个答案:

答案 0 :(得分:3)

你根本不需要想象力。由于SVG是XML格式,因此您可以将文档加载到DOMDocument对象中,并更改svg标记上的width和height属性。

这是一个例子(svg文件来自jenkov.com):

<?php
$svg = <<< EOF
<svg xmlns="http://www.w3.org/2000/svg"
    xmlns:xlink="http://www.w3.org/1999/xlink">

    <rect x="50" y="50" height="110" width="110"
          style="stroke:#ff0000; fill: #ccccff"
          transform="translate(30) rotate(45 50 50)"
            >
    </rect>
    <text x="70" y="100"
          transform="translate(30) rotate(45 50 50)"
    >Hello World</text>
</svg>
EOF;

$myWidth = 100;
$myHeight = 150;

$dom = new DOMDocument();
$dom->loadXML($svg);
$svg = $dom->getElementsByTagName('svg');
$svg->item(0)->setAttribute('width', $myWidth);
$svg->item(0)->setAttribute('height', $myHeight);

print $dom->saveXML($svg->item(0))."\n";

答案 1 :(得分:0)

听起来你想在你的svg文件中添加一个(紧密贴合的)viewBox,然后用imagemagick光栅化它们。

执行第一步的一些选项: