2014-06-19 31 views
2

我有svg文件,我想根据它们的尺寸进行比较。可以使用PIL来获取svg文件的尺寸吗?

我读到关于PIL作为python中最好的图像工具。 PIL处理svg文件吗?我似乎无法在任何地方找到它。

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

如果不是PIL,如何获得.svg文件的x & y尺寸?

感谢

+0

人们将SVG文件解释为文本,因为SVG文件实际上是可以*解释*以呈现图像的XML文本文件。 – murgatroid99

+0

你可以尝试使用[PySVG](http://codeboje.de/pysvg/) – tmr232

+0

使用pysvg我有pysvg.parse(我的文件),但是我怎样才能得到x和y尺寸?我正在寻找明确的文档,我只看到如何创建SVG不获取信息退出 – Tai

回答

0

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

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

不幸的是,就其性质而言,SVG没有单一的本地大小。相反,it has two size concepts:视图框以及高度和宽度属性。

如果你的SVG文件具有widthheight属性,你可以放心地分别使用它们作为xy尺寸。否则,如果它具有viewBox属性,则表示可以缩放到您需要的任何大小;但是,如果需要,可以使用第三个和第四个数字作为宽度和高度。

更糟糕的是,SVG文件可能没有一个。在这种情况下,可以基于文件中的元素计算高度和宽度,但鉴于格式的全部功能,这比任何人想要做的都要棘手。