我尝试在SVG文件上使用getimagesize()
,但失败了。
我知道SVG是“Scalable Vector Graphics”,但我发现Google Chrome的“Review elements”可以完美地获得SVG图片的尺寸,所以我怀疑这在PHP中也是可能的。
如果很难得到尺寸,有没有方法来判断SVG图片是垂直的还是水平的?
发布于 2011-06-30 16:57:13
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);
这些值需要强制转换,否则它们将返回一个对象。
发布于 2014-04-16 12:43:53
我也有同样的问题,因为我找不到答案,于是我发明并解决了以下问题:
<?php
$svgfile = simplexml_load_file("svgimage.svg");
$width = substr($svgfile[width],0,-2);
$height = substr($svgfile[height],0,-2);
?>
请注意,我使用的SVG文件是在Adobe Illustrator中创建的。因此,图片的svg代码开头如下:
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="400px" height="738px" viewBox="0 0 400 738" enable-background="new 0 0 400 738" xml:space="preserve">
...
多亏了这一点,我才能得到宽度和高度值。
我使用substr
是因为$svgfile[width]
返回带有"px“后缀的值。我还可以使用viewBox value并对其进行拆分,以获得值。
来自智利圣地亚哥的问候
https://stackoverflow.com/questions/6532261
复制相似问题