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")
画像コンテンツをカイロキャンバスと同じサイズにするにはどうすればよいですか?私は試した
svg.set_property('width', 500)
svg.set_property('height', 500)
しかし得た
TypeError: property 'width' is not writable
また、librsvg pythonバインディングのドキュメントは非常にまれで、cairoサイトにあるランダムなコードスニペットのみです。