如何在PHP中获取SVG图片的宽度和高度?
2022-08-30 19:38:56
我试图在SVG文件上使用,但它失败了。getimagesize()
我知道SVG是“可扩展的矢量图形”,但我发现Google Chrome的“评论元素”可以完美地获得SVG图片的尺寸,所以我怀疑这在PHP中也是可能的。
如果很难得到尺寸,有没有办法判断SVG图片是垂直还是水平?
我试图在SVG文件上使用,但它失败了。getimagesize()
我知道SVG是“可扩展的矢量图形”,但我发现Google Chrome的“评论元素”可以完美地获得SVG图片的尺寸,所以我怀疑这在PHP中也是可能的。
如果很难得到尺寸,有没有办法判断SVG图片是垂直还是水平?
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);
这些值需要强制转换,否则它们将返回一个对象。
问题是:SVG图像没有您可能想到的意义上的“大小”。另一方面,它们确实具有高度宽度比。
此比率通常可以在 viewBox
属性中找到。
另一方面,如果根 SVG 元素上不存在该属性,则图像比率对于确定是非常不平凡的。viewBox
编辑:
附注:Chrome之所以给你完美的坐标,并不一定是因为它会查看SVG来确定大小。它很可能是它设置大小的简单结果。
尽管 SVG 元素确实具有 和 属性,但这些属性可能未指定为像素,而是许多单位中的任何一个,因此它们不一定有很大帮助。height
width