通过librsvg缩放矢量图像

3

在通过librsvg获取SVG的像素缓冲区之前,是否可以对其进行缩放?我可以看到像rsvg_pixbuf_from_file_at_zoom这样的API,但已标记为不推荐使用。

还有其他方法吗?如果可能的话,我想避免使用cairo。

1个回答

4

您的选择不是很多,只能选择以下两种方法之一:

  • 使用一个已经过时的函数,例如 rsvg_pixbuf_from_file_at_size() (这也并不是非常糟糕,因为这个函数不会很快被废弃)
  • 或者使用 RsvgHandle 对象,结合 rsvg_handle_new_from_file() 和 rsvg_handle_render_cairo() 在正确尺寸的 cairo surface 上进行渲染

如果您只想得到一个 GdkPixbuf,请将对 cairo 的使用限制到最小,具体步骤如下:

  • 使用 rsvg_handle_new_from_file() 创建一个 RsvgHandle 对象
  • 创建一个 cairo context 并设置您想要的转换矩阵
  • 使用 rsvg_handle_render_cairo() 渲染 svg
  • 使用 rsvg_handle_get_pixbuf() 获取 pixbuf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接