使用 Python 解析 SVG 文件路径

2023-12-31

我正在开发一个机器人项目,从 Android 运行设备拍摄一张照片,然后发送到 cloudconvert.org 将其转换为 SVG,然后所有 SVG 路径将被转换为 x y 坐标并串行发送到机器人手臂,机器人手臂将绘制它们笔打开或关闭。

所以我已经在这个项目中走了到目前为止,我现在遇到的唯一问题是将 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>

我只想以字符串形式访问 dom 对象内的数据,当我尝试时

>>> print (str(pth))

然后什么都没有出现,只有两个空行>>>再次出现。


这是一个旧线程,但由于接受的答案中的链接不再有效,因此我处理 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Python 解析 SVG 文件路径 的相关文章

  • 类的 IPython 表示

    我正在使用我创建的模块尝试 IPython 但它没有显示类对象的实际表示 相反 它显示类似的内容 TheClass module TheClass name I heavily在这个模块中使用元类 我有真正有意义的类表示 应该向用户显示 是
  • 如何在 Matplotlib 饼图周围绘制箭头以将每个标签指向圆圈中各自的部分?

    我一直在用 Matplotlib 绘制一些图表 我有一个饼图 想要在图表周围绘制箭头 使每个标签都指向图表 我有一个例子 这是我当前的代码 import matplotlib pyplot as plt plt rcParams font
  • 为什么 dataclasses.astuple 返回类属性的深层副本?

    在下面的代码中astuple函数正在执行数据类的类属性的深层复制 为什么它不能产生与函数相同的结果my tuple import copy import dataclasses dataclasses dataclass class Dem
  • NLTK 2.0分类器批量分类器方法

    当我运行此代码时 它会抛出一个错误 我认为这是由于 NLTK 3 0 中不存在batch classify 方法 我很好奇如何解决旧版本中的某些内容在新版本中消失的此类问题 def accuracy classifier gold resu
  • 我应该使用 Python 双端队列还是列表作为堆栈? [复制]

    这个问题在这里已经有答案了 我想要一个可以用作堆栈的 Python 对象 使用双端队列还是列表更好 元素数量较少还是数量较多有什么区别 您的情况可能会根据您的应用程序和具体用例而有所不同 但在一般情况下 列表非常适合堆栈 append is
  • python multiprocessing 设置生成进程等待

    是否可以生成一些进程并将生成进程设置为等待生成的进程完成 下面是我用过的一个例子 import multiprocessing import time import sys def daemon p multiprocessing curr
  • 在 Django Admin 中调整字段大小

    在管理上添加或编辑条目时 Django 倾向于填充水平空间 但在某些情况下 当编辑 8 个字符宽的日期字段或 6 或 8 个字符的 CharField 时 这确实是一种空间浪费 字符宽 然后编辑框最多可容纳 15 或 20 个字符 我如何告
  • Tensorboard SyntaxError:语法无效

    当我尝试制作张量板时 出现语法错误 尽管开源代码我还是无法理解 我尝试搜索张量板的代码 但不清楚 即使我不擅长Python 我这样写路径C Users jh902 Documents logs因为我正在使用 Windows 10 但我不确定
  • 如何将特定范围内的标量添加到 numpy 数组?

    有没有一种更简单 更节省内存的方法可以单独在 numpy 中执行以下操作 import numpy as np ar np array a l r ar c a a 0 l ar tolist a r 它可能看起来很原始 但它涉及获取给定数
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • 嵌套作用域和 Lambda

    def funct x 4 action lambda n x n return action x funct print x 2 prints 16 我不太明白为什么2会自动分配给n n是返回的匿名函数的参数funct 完全等价的定义fu
  • pandas - 包含时间序列数据的堆积条形图

    我正在尝试使用时间序列数据在 pandas 中创建堆积条形图 DATE TYPE VOL 0 2010 01 01 Heavy 932 612903 1 2010 01 01 Light 370 612903 2 2010 01 01 Me
  • 将 Matlab 的 datenum 格式转换为 Python

    我刚刚开始从 Matlab 迁移到 Python 2 7 在读取 mat 文件时遇到一些问题 时间信息以 Matlab 的日期数字格式存储 对于那些不熟悉它的人 日期序列号将日历日期表示为自固定基准日期以来已经过去的天数 在 MATLAB
  • 带有 LSTM 的 GridSearchCV/RandomizedSearchCV

    我一直在尝试通过 RandomizedSearchCV 调整 LSTM 的超参数 我的代码如下 X train X train reshape X train shape 0 1 X train shape 1 X test X test
  • Python:Goslate 翻译请求返回“503:服务不可用”[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我们不允许提出寻求书籍 工具 软件库等推荐的问题 您可以编辑问题 以便用事实和引文来回答 这个问题似乎不是关于主要由程序员使用的特定编程问
  • 如何以正确的方式为独立的Python应用程序制作setup.py?

    我读过几个类似的主题 但还没有成功 我觉得我错过或误解了一些基本的事情 这就是我失败的原因 我有一个用 python 编写的 应用程序 我想在标准 setup py 的帮助下进行部署 由于功能复杂 它由不同的 python 模块组成 但单独
  • 每当使用 import cv2 时 OpenCV 都会出错

    我在终端上使用 pip3 install opencv contrib python 安装了 cv2 并且它工作了 但是每当我尝试导入 cv2 或运行导入了 cv2 的 vscode 文件时 在 python IDLE 上它都会说 Trac
  • 制作一份 Python 文档的 PDF 文件

    Python 官方网站提供 PDF 文档下载 但它们是按章节分隔的 我下载了源代码并构建了 PDF 文档 这些文档也是单独的 PDF 我怎么能够从源代码中的 Makefile 构建一个 PDF 文件 我认为这样阅读起来会更方便 如果连接单独
  • Firebase Firestore:获取文档的生成 ID (Python)

    我可以创建一个新文档 带有自动生成的 ID 并存储对其的引用 如下所示 my data key value doc ref db collection u campaigns add my data 我可以像这样访问数据本身 print d
  • python 对浮点数进行不正确的舍入

    gt gt gt a 0 3135 gt gt gt print 3f a 0 314 gt gt gt a 0 3125 gt gt gt print 3f a 0 312 gt gt gt 我期待 0 313 而不是 0 312 有没有

随机推荐

  • 在基于 django 类的通用视图 CreateView 中设置表单字段

    我正在使用 django 的CreateView将图像添加到书中 我将书的 id 作为 url 中的参数传递给基于类的视图 表单字段 例如book and language不会在模板上呈现 而是通过书籍 ID 获得 views py cla
  • 设置默认 WebAPI 格式化程序

    我们使用 WebAPI 来模拟遗留系统的处理 因此 我们希望默认响应格式化程序是 XmlFormatter 而不是 JsonFormatter 原因是某些现有的服务调用不提供 Accept HTTP 标头字段 我可以通过从 Formatte
  • RTSP/RTMP 视频流客户端 iOS [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要一个开源解决方案 库来将 RTSP RTMP 流式传输到 iOS 应用程序 我需要构建一个连接到媒
  • ipywidgets 小部件值未更改

    我正在尝试从在 Python 3 6 中运行 Jupyter Notebooks 的 Microsoft Azure Notebooks 中的 ipywidgets 小部件获取输出 但是 当我获取新值时 它不会返回新值 这也适用于从未被其他
  • PhoneGap IOS 应用程序大小

    我使用 eclipse 和 xcode 4 5 创建了适用于 android 和 IOS 的phonegap 应用程序 Android应用程序大小为650KB iOS应用程序的大小是9MB 我创建了空的phonegap应用程序 刚刚在终端上
  • 位运算与

    这是一个leetcode问题 给定一个数字数组 nums 其中恰好有两个元素仅出现一次 而所有其他元素恰好出现两次 找出只出现一次的两个元素 例如 给定 nums 1 2 1 3 2 5 返回 3 5 我的代码是 class Solutio
  • 使用bash,如何删除特定目录中所有文件的扩展名?

    我想保留这些文件但删除它们的扩展名 这些文件的扩展名不同 我的最终目标是删除它们的所有扩展并将它们更改为我选择的一个扩展 我已经把第二部分写下来了 到目前为止我的代码 bin bash echo n Enter the directory
  • 寻找在过程中保持大小并清除旧元素的数据结构

    Usecase维护最后 n 个访问过的 URL 的列表 其中 n 是固定数字 当新的 URL 添加到列表中时 旧的 URL 会自动删除 以使其保持在 n 个元素 要求数据结构需要按时间排序 如果接受 Comparator 应该没问题 你需要
  • 如何遍历 N 叉树

    我的树 节点类 import java util ArrayList import java util List public class Node
  • 如果未安装应用程序,则重定向到应用程序商店

    场景是用户将获得他的电子邮件的链接 如果用户单击链接 如果应用程序已安装 则应用程序应打开 如果应用程序未安装 则应重定向到应用程序商店 我已经看到了深度链接的实现 但我相信它也需要在后端进行更多的实现 任何人都可以帮忙解决这个问题吗 如果
  • 如何在 Webpack 中使用 Tree Shaking?

    我刚刚使用 Angular 2 版本 rc 2 应用程序 使用 Typescript 更新到 webpack 2 1 0 beta 15 但我想知道如何使用树摇动功能 我读到它应该 开箱即用 但我仍然有一个 1 7Mb 的捆绑包用于一个非常
  • 我在哪里可以下载 Facebook 的 PHP 源代码转换器 HipHop [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 在哪里可以下载 PHP 版 HipH
  • 是否可以列出数据库中的所有外键?

    如何列出 sql server 数据库中的所有 F 我使用这个语句 看起来效果很好 SELECT RC CONSTRAINT NAME FK Name KF TABLE SCHEMA FK Schema KF TABLE NAME FK T
  • 带有电子邮件域的 AutoCompleteTextView android

    所以我的应用程序中有一个自动完成文本视图字段 我希望用户输入他的电子邮件地址 现在 为了帮助他更快地打字并且不犯错误 我想在打字时向他建议最常见的电子邮件域服务器 我将该控件与该数组一起使用 String arraymails gmail
  • 如何更改选项卡主机的默认颜色

    我使用的是2 2 SDK版本 我使用 TabHost 以选项卡视图格式显示活动 当我在手机中安装应用程序 版本2 2 1 时 选项卡主机颜色已更改为黄色 即使我也不给 TabHost 任何颜色 我不知道为什么颜色改变了 当我在模拟器中运行相
  • Android WebView UTF-8 不显示

    我有一个 webview 并尝试将简单的 UTF 8 文本加载到其中 mWebView loadData 將賦予他們的傳教工作標示為 text html UTF 8 但 WebView 显示 ANSI ASCII 垃圾 显然是编码问题 但是
  • Django 开发服务器重新加载时间太长

    自从我升级到 OSX Lion 以来 这一直是我的问题 每当我更改 Django 项目中的文件时 运行服务器重新加载 需要相当长的时间才能再次开始服务 即使在新创建的 Django 1 4 项目中也会发生这种情况 不过在 Snow Leop
  • 如何在 Python 2.7 中创建计时器?

    我目前正在使用 Pyglet 库编写一个打砖块克隆程序 我想制作一个计时器 为游戏的 奖励 即更长的桨 更快的桨移动 更大的球 计时长达 20 秒 我一直在尽我所能地在互联网上挖掘 但找不到答案 import threading bonus
  • 使用 Rails 中的表单批量更新对象

    我有一个人物模型和一个报价模型 每个人都可以有许多与其相关的引言 而这些引言又可以与作者 文本 网址等内容相关联 实际上 实际上只有一个人拥有引用对象 但所有人都可能拥有一个 我正在尝试在报价上使用一个非常简单的批量适度工具 例如 用户可以
  • 使用 Python 解析 SVG 文件路径

    我正在开发一个机器人项目 从 Android 运行设备拍摄一张照片 然后发送到 cloudconvert org 将其转换为 SVG 然后所有 SVG 路径将被转换为 x y 坐标并串行发送到机器人手臂 机器人手臂将绘制它们笔打开或关闭 所