编程语言
首页 > 编程语言> > 如何使用librsvg Python绑定调整svg映像文件的大小

如何使用librsvg Python绑定调整svg映像文件的大小

作者:互联网

当光栅化svg文件时,我希望能够为生成的png文件设置宽度和高度.使用以下代码,仅将画布设置为所需的宽度和高度,具有原始svg文件尺寸的实际图像内容将呈现在(500,600)画布的左上角.

import cairo
import rsvg

WIDTH, HEIGHT  = 500, 600
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, WIDTH, HEIGHT)

ctx = cairo.Context(surface)

svg = rsvg.Handle(file="test.svg")
svg.render_cairo(ctx)

surface.write_to_png("test.png")

我该怎么做才能使图像内容与cairo canvas相同?我试过了

svg.set_property('width', 500)
svg.set_property('height', 500)

但得到了

TypeError: property 'width' is not writable

librsvg python绑定的文档似乎非常罕见,只有一些随机代码片段在cairo网站上.

解决方法:

librsvg中有一个resize function,但它已被弃用.

在开罗设置scale matrix以更改图纸的大小:

>在cairo上下文中设置比例变换矩阵
>使用.render_cairo()方法绘制SVG
>将表面写入PNG

标签:python,cairo,librsvg
来源: https://codeday.me/bug/20190610/1214647.html