Beim Rastern der SVG-Datei möchte ich die Breite und Höhe für die resultierende PNG-Datei festlegen können. Mit dem folgenden Code wird nur die Zeichenfläche auf die gewünschte Breite und Höhe festgelegt. Der tatsächliche Bildinhalt mit der ursprünglichen SVG-Dateidimension wird in der oberen linken Ecke des Arbeitsbereichs (500, 600) gerendert.So passen Sie die Größe der SVG-Bilddatei mit librsvg an Python-Bindung
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")
Was soll ich tun, um den Bildinhalt mit cairo canvas gleich groß zu machen? Ich habe versucht,
svg.set_property('width', 500)
svg.set_property('height', 500)
bekam aber
TypeError: property 'width' is not writable
Auch Dokumente für librsvg Python scheinen Bindung extrem selten zu sein, nur einige zufällige Code-Schnipsel auf kairo Website.
Wird die bereits gerasterten Bildergebnis zu einem Datenverlust des ursprünglichen Vektor-Bild neu zu skalieren? – btw0
Die Kairo-Transformationsmatrix arbeitet mit Vektordaten, die nach dem Setzen gezeichnet wurden. Sie skalieren das gerasterte Bild nicht, sondern die von librsvg ausgegebenen Befehle, die es erzeugen. –
Gut zu wissen, danke. – btw0