PIL可以用来获取svg文件的尺寸吗?

3 投票
1 回答
2773 浏览
提问于 2025-04-18 10:25

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

我听说PIL是Python中最好的图像处理工具。请问PIL能处理svg文件吗?我好像找不到相关的信息。

在网上搜索时,我看到有人把svg文件当作文本来解析,这听起来有点不太合理。

如果PIL不是获取.svg文件的宽度和高度的最佳方法,那还有什么其他的好办法呢?

1 个回答

3

PIL可以处理很多种图片格式,但目前还不支持SVG格式。这是因为SVG其实是一组生成图像的指令,而不是存放原始图像数据的容器。

不过,SVG可以像XML一样被读取,你可以用你喜欢的工具来处理,比如Python标准库里的xml.etree.ElementTree

但是,SVG本身没有一个固定的尺寸。它有两个尺寸的概念:一个是视图框(view box),另一个是高度和宽度属性。

如果你的SVG文件里有widthheight属性,你可以直接把它们当作xy的尺寸来用。如果没有这两个属性,但有viewBox属性,那它是可以根据需要缩放到任何尺寸的;不过,如果需要的话,你可以用它的第三和第四个数字来作为宽度和高度。

更糟糕的是,SVG文件可能缺少这两种属性中的任意一个。在这种情况下,你可以根据文件里的元素来计算出一个高度和宽度,但这会比大家想象的要复杂得多,因为SVG格式的功能非常强大。

撰写回答