svgファイルをラスタライズするとき、結果のpngファイルの幅と高さを設定したいと考えています。次のコードでは、キャンバスのみが希望の幅と高さに設定されているため、元のsvgファイル次元を持つ実際のイメージコンテンツが(500,600)キャンバスの左上隅にレンダリングされます。librsvg Pythonバインディングを使用してsvgイメージファイルのサイズを変更する方法
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)
を試みたが、カイロのサイト上でのみいくつかのランダムなコードスニペットは極めて稀であると思わ結合librsvgパイソンのための書類も
TypeError: property 'width' is not writable
を得ました。
元ベクタ画像のデータの損失で、すでにラスタライズされた画像の結果を再スケーリングされます。 それは上記Luperによって答えが実装しますか? – btw0
カイロ変換行列は、設定後に描画されたベクトルデータで動作します。ラスタライズされたイメージをスケーリングするのではなく、それを生成するlibrsvgによって発行されたコマンドをスケーリングします。 –
よろしくお願いいたします。ありがとうございます。 – btw0