PIL可以用来获取svg文件的尺寸吗?
我有一些svg文件,我想根据它们的尺寸进行比较。
我听说PIL是Python中最好的图像处理工具。请问PIL能处理svg文件吗?我好像找不到相关的信息。
在网上搜索时,我看到有人把svg文件当作文本来解析,这听起来有点不太合理。
如果PIL不是获取.svg文件的宽度和高度的最佳方法,那还有什么其他的好办法呢?
1 个回答
3
PIL可以处理很多种图片格式,但目前还不支持SVG格式。这是因为SVG其实是一组生成图像的指令,而不是存放原始图像数据的容器。
不过,SVG可以像XML一样被读取,你可以用你喜欢的工具来处理,比如Python标准库里的xml.etree.ElementTree。
但是,SVG本身没有一个固定的尺寸。它有两个尺寸的概念:一个是视图框(view box),另一个是高度和宽度属性。
如果你的SVG文件里有width
和height
属性,你可以直接把它们当作x
和y
的尺寸来用。如果没有这两个属性,但有viewBox
属性,那它是可以根据需要缩放到任何尺寸的;不过,如果需要的话,你可以用它的第三和第四个数字来作为宽度和高度。
更糟糕的是,SVG文件可能缺少这两种属性中的任意一个。在这种情况下,你可以根据文件里的元素来计算出一个高度和宽度,但这会比大家想象的要复杂得多,因为SVG格式的功能非常强大。