如何在PHP中获取SVG图片的宽度和高度?

2022-08-30 19:38:56

我试图在SVG文件上使用,但它失败了。getimagesize()

我知道SVG是“可扩展的矢量图形”,但我发现Google Chrome的“评论元素”可以完美地获得SVG图片的尺寸,所以我怀疑这在PHP中也是可能的。

如果很难得到尺寸,有没有办法判断SVG图片是垂直还是水平?


答案 1

SVG只是一个XML文件,所以GD库不会有任何帮助!

您应该能够简单地分析 XML 文件以获取此类属性。

$xml = '
<svg width="500" height="300" version="1.1"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">

<rect x="90" y="10"
    width="400" height="280"
    style="fill: rgb(255,255,255); stroke: rgb(0,0,0); stroke-width: 1; " />
</svg>';

$xmlget = simplexml_load_string($xml);
$xmlattributes = $xmlget->attributes();
$width = (string) $xmlattributes->width; 
$height = (string) $xmlattributes->height;
print_r($width);
print_r($height);

这些值需要强制转换,否则它们将返回一个对象。


答案 2

问题是:SVG图像没有您可能想到的意义上的“大小”。另一方面,它们确实具有高度宽度比。

此比率通常可以在 viewBox 属性中找到。

另一方面,如果根 SVG 元素上不存在该属性,则图像比率对于确定是非常不平凡的。viewBox

编辑:

附注:Chrome之所以给你完美的坐标,并不一定是因为它会查看SVG来确定大小。它很可能是它设置大小的简单结果。

尽管 SVG 元素确实具有 和 属性,但这些属性可能未指定为像素,而是许多单位中的任何一个,因此它们不一定有很大帮助。heightwidth


推荐