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