首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pygtk / rsvg -获取绘图大小?

pygtk / rsvg -获取绘图大小?
EN

Stack Overflow用户
提问于 2012-05-26 01:54:10
回答 1查看 723关注 0票数 2

RSVG和Cairo有可能在SVG图像中找到绘图的范围吗?

即不是页面宽度/高度,而是绘图元素实际使用的空间。

这不起作用,它只返回页面大小:

代码语言:javascript
复制
 img = rsvg.Handle(file="myfile.svg")
 (w, h, w2,h2) = svg.get_dimension_data() # gives document's declared size

这似乎不会返回任何有关大小的信息:

代码语言:javascript
复制
 svg.render_cairo(context) # returns None

这不起作用,它还返回页面大小:

代码语言:javascript
复制
 self.svg.get_pixbuf().get_width()

在pygtk-all- in -one-2.24.0.win32-py2.7和RSVG2.22.3-1_win32中,我找不到其他答案中提到的get_dimensions_sub()函数。

EN

回答 1

Stack Overflow用户

发布于 2013-04-03 06:34:31

今晚我在网上搜索,试图解决这个看似简单的问题。似乎没有一种简单的方法可以使用rsvg、cairo或类似的工具来获取图形的边界框。除非我漏掉了什么明显的东西。

但是,您可以使用--query-all选项调用Inkscape。这将为您提供SVG文件中所有对象的尺寸,并将完整图形作为列表中的第一个条目。

代码语言:javascript
复制
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:])

现在,您将在xy及其widthheight中找到绘图的位置。这样,使用rsvg和cairo将裁剪后的SVG重绘到新文件中就变得很简单。

我创建a simple tool就是为了做到这一点,我希望the code应该相当容易理解。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10759170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档