首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在PHP中获得SVG图片的宽度和高度?

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

Stack Overflow用户
提问于 2011-06-30 16:49:09
回答 2查看 33.5K关注 0票数 21

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

我知道SVG是“Scalable Vector Graphics”,但我发现Google Chrome的“Review elements”可以完美地获得SVG图片的尺寸,所以我怀疑这在PHP中也是可能的。

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

EN

回答 2

Stack Overflow用户

发布于 2011-06-30 16:57:13

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

您应该能够简单地解析XML文件来获得这些属性。

代码语言:javascript
复制
$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);

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

票数 15
EN

Stack Overflow用户

发布于 2014-04-16 12:43:53

我也有同样的问题,因为我找不到答案,于是我发明并解决了以下问题:

代码语言:javascript
复制
<?php
    $svgfile = simplexml_load_file("svgimage.svg");
    $width = substr($svgfile[width],0,-2);
    $height = substr($svgfile[height],0,-2);
?>

请注意,我使用的SVG文件是在Adobe Illustrator中创建的。因此,图片的svg代码开头如下:

代码语言:javascript
复制
<?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并对其进行拆分,以获得值。

来自智利圣地亚哥的问候

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6532261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档