我正在开发一个机器人项目,从一个Android运行设备拍照然后发送到cloudconvert.org将其转换为SVG,然后所有SVG路径将被转换为xy坐标并连续发送到机器人手臂将绘制它们用笔打开或关闭.
所以我在这个项目中已经走了这么远,我现在唯一的问题是将SVG文件解析为路径列表作为字符串列表.
我试过minidom,但似乎它的工作我可以实际访问SVG文件,但我无法访问路径数据例如'M 100,200 L 200.300'而不是我得到的
>>> from xml.dom import minidom
>>> xmldoc= minidom.parse("C:\Users\DELL\Desktop\drawing-1.svg")
>>> a=xmldoc.getElementsByTagName("svg")[0]
>>> b=a.getElementsByTagName("g")[0]
>>> pth=b.getElementsByTagName("path")[0]
>>> pth
<DOM Element: path at 0x1bb6238>
Run Code Online (Sandbox Code Playgroud)
我只想将dom对象中的数据作为字符串访问,当我尝试时
>>> print (str(pth))
Run Code Online (Sandbox Code Playgroud)
什么都没有出现只有两个空行然后>>>
再次出现
这是一个旧线程,但由于接受的答案中的链接不再适用于我处理svg路径的方法.
有一个svg.path模块,它提取路径和其他形状,并提供处理它们的方法.
from xml.dom import minidom
from svg.path import parse_path
svg_dom = minidom.parseString(svg_string)
path_strings = [path.getAttribute('d') for path in svg_dom.getElementsByTagName('path')]
for path_string in path_strings:
path_data = parse_path(path_string)
# now use methods provided by the path_data object
# e.g. points can be extracted using
# point = path_data.pos(pos_val)
# where pos_val is anything between 0 and 1
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5410 次 |
最近记录: |