【问题标题】:Convert SVG to numpy array将 SVG 转换为 numpy 数组
【发布时间】:2017-12-15 18:17:29
【问题描述】:

我正在为 python 库编写一个函数,在其中一个函数中我需要将 SVG 字符串作为输入,即

<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink"  >
    <rect style="stroke-width:1; fill:rgb(255, 255, 255); stroke:black; " x="0" y="0" height="100px" width="200px"  />
    <text x="210" y="110"  >
    Hello World
    </text>
</svg>

我想得到一个光栅化的图像,像这样:

但是,我需要在 python 中访问这个图像,最好是 numpy 数组的形式。

我知道这可以使用外部可用的软件来完成,即 inkscape 或 imagemagic,但我明确需要能够在纯 python 中执行此操作。此外,为了能够将其分发给不同平台上的广泛用户,我不支持编译后端(如 cairo)。

是否有任何 python 包以字符串格式获取 SVG 图像并以某种方式返回表示光栅化图像的 numpy 数组?

【问题讨论】:

标签: python numpy svg


【解决方案1】:

迟到的答案!

这里是文档参考:

https://www.crummy.com/software/BeautifulSoup/bs4/doc/

我正在为 python 库编写一个函数 - 好的,这里有一些东西可以帮助你。

from bs4 import BeautifulSoup

data = BeautifulSoup(input, "lxml-xml")
nsvg = data.find_all('svg')

for svg in nsvg:
    # parse specific to your needs, read docs
    for element in svg.children:
        np.append(do_something(element))

根据您的“python 库”的上下文,对您的解决方案的更好答案可能取决于性能和导入要求,请随时继续讨论。

【讨论】:

  • 目前 any 平台无关的方法来根据问题生成一个 numpy 数组将是一个很好的开始。
  • 希望这会有所帮助 - 删除了 numpy 基础知识。在解析方面需要更多帮助吗?我可以为给出的 提供一个完整的例子。乐于助人
猜你喜欢
  • 2015-06-20
  • 1970-01-01
  • 2021-12-29
  • 2017-03-08
  • 2012-04-18
  • 2021-05-14
  • 2018-02-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多