【问题标题】:Can PIL be used to get dimensions of an svg file?PIL 可以用来获取 svg 文件的尺寸吗?
【发布时间】:2014-08-10 13:09:31
【问题描述】:

我有 svg 文件,我想根据它们的尺寸进行比较。

我了解到 PIL 是 Python 中最好的图像工具。 PIL 是否处理 svg 文件?我似乎在任何地方都找不到这个。

在谷歌搜索时,我看到人们将 svg 文件解释为似乎违反直觉的文本。

如果不是 PIL 是获取 .svg 文件的 x 和 y 尺寸的最佳方法,该怎么办?

谢谢

【问题讨论】:

  • 人们将 SVG 文件解释为文本,因为 SVG 文件实际上是 XML 文本文件,可以解释以呈现图像。
  • 您可以尝试使用PySVG
  • 使用 pysvg 我有 pysvg.parse(我的文件),但是我怎样才能得到 x 和 y 尺寸呢?我正在寻找清晰的文档,但我只看到如何创建 svg 而不是获取信息
  • pysvg 当我使用 sudo easy_install pysvg 作为 pysvg.egg 文件安装时,我无法正确使用它?

标签: python image svg python-imaging-library


【解决方案1】:

PIL 处理 many image types,但不是(还没有?)SVG。部分原因是 SVG 是一组生成图像的指令,而不是原始图像数据的容器。

幸运的是,可以使用您选择的工具将 SVG 读取为 XML;例如,Python 标准库中的xml.etree.ElementTree

不幸的是,就其本质而言,SVG 没有单一的原生尺寸。取而代之的是it has two size concepts:视图框,以及高度和宽度属性。

如果您的 svg 文件具有 widthheight 属性,您可以安全地将它们分别用作 xy 维度。否则,如果它具有viewBox 属性,则意味着它可以缩放到您需要的任何大小;但是,如果需要,您可以使用它的第三个和第四个数字作为宽度和高度。

更糟糕的是,SVG 文件可能缺少其中任何一个。在这种情况下,可能会根据文件中的元素计算高度和宽度,但考虑到格式的全部功能,这比任何人真正想做的都要棘手。

【讨论】:

    猜你喜欢
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 2015-07-31
    • 1970-01-01
    • 2018-03-20
    • 2012-04-18
    • 2013-12-18
    相关资源
    最近更新 更多