获取SVG路径的外部坐标(getBBox)?

3

我需要在PHP中获取SVG路径的坐标(左上角的x,y和宽度/高度)。

我的意思是SVG文件中路径节点的d属性,类似于这样:

<path d="M 100 100 L 300 100 L 200 300 z" />

我的路径非常复杂,自己很难做到这一点(有绝对和/或相对坐标,可能的曲线等)

PHP中是否有任何用于此类工作的库?

4个回答

2

如果你的形状没有使用弧线或贝塞尔曲线(实际上许多形状使用直线来近似曲线),那么你可以使用这个PHP函数来计算边界框:http://pastebin.com/8eLQccbg


2

1

我认为这个问题的解决方案非常简单,以至于可能是错误的;)。但是,尽管我还没有尝试过它,但它看起来对我来说相当不错。只需在您的服务器上安装inkscape,然后运行以下命令:

inkscape --without-gui --query-all /path/to/doc.svg

根据帮助文档,这将会列出所有对象的id、x、y、w和h - 听起来正是我需要的,也是这里所要求的!示例输出:
Layer_1,1.8032746e-06,-0.002,780.37099,455.91999
g4,0.090994976,-72.489183,72.445768,72.454697
polygon6,2.125,-70.896,69,69
polygon8,2.125,-70.896,69,69
g10,0.090994976,-72.489183,64.778768,3.5796973
path12,61.423995,-72.489183,3.4457675,3.5796973
path14,53.756995,-72.489183,3.4457675,3.5796973
path16,46.090995,-72.489183,3.4457675,3.5796973
path18,38.423995,-72.489183,3.4457675,3.5796973
....

这个函数在网络请求中调用速度足够快,但如果负载较大,你可以很容易地将其推到后台进程中。

0

虽然不是纯PHP,但对我有效的一个选择是使用http://phantomjs.org来获取SVG边界框。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接