RSVG和Cairo有可能在SVG图像中找到绘图的范围吗?
即不是页面宽度/高度,而是绘图元素实际使用的空间。
这不起作用,它只返回页面大小:
img = rsvg.Handle(file="myfile.svg")
(w, h, w2,h2) = svg.get_dimension_data() # gives document's declared size这似乎不会返回任何有关大小的信息:
svg.render_cairo(context) # returns None这不起作用,它还返回页面大小:
self.svg.get_pixbuf().get_width()在pygtk-all- in -one-2.24.0.win32-py2.7和RSVG2.22.3-1_win32中,我找不到其他答案中提到的get_dimensions_sub()函数。
发布于 2013-04-03 06:34:31
今晚我在网上搜索,试图解决这个看似简单的问题。似乎没有一种简单的方法可以使用rsvg、cairo或类似的工具来获取图形的边界框。除非我漏掉了什么明显的东西。
但是,您可以使用--query-all选项调用Inkscape。这将为您提供SVG文件中所有对象的尺寸,并将完整图形作为列表中的第一个条目。
import subprocess
output = subprocess.check_output(["inkscape", "--query-all", "myfile.svg"])
values = [line.split(',') for line in output.split('\n')]
whole_drawing = values[0]
[x, y, width, height] = map(float, whole_drawing[1:])现在,您将在x、y及其width和height中找到绘图的位置。这样,使用rsvg和cairo将裁剪后的SVG重绘到新文件中就变得很简单。
我创建a simple tool就是为了做到这一点,我希望the code应该相当容易理解。
https://stackoverflow.com/questions/10759170
复制相似问题