I have written this script for rendering a SVG in a wxPython frame:

#!/usr/bin/env python

import wx
import rsvg
import cairo
import numpy

class TestFrame(wx.Frame):
   def __init__(self, parent, id, title, pos, size):
       wx.Frame.__init__(self, parent, id, title, pos, size)

       imgW = size[0]
       imgH = size[1]
       brga = numpy.ndarray(shape=(imgH,imgW,4), dtype=numpy.uint8)
       brga[:,:,0].fill(180) #blue
       brga[:,:,1].fill(105) #green
       brga[:,:,2].fill(255) #red
       rgba = numpy.ndarray(shape=(imgH,imgW,4), dtype=numpy.uint8)
       data24 = numpy.ndarray(shape=(imgH,imgW,3), dtype=numpy.uint8)
               stride = imgW * 4

       surface = cairo.ImageSurface.create_for_data(brga,
                                                    cairo.FORMAT_ARGB32,
                                                    imgW,
                                                    imgH,
                                                    stride)
       ctx = cairo.Context(surface)
       rsvg.set_default_dpi(900)
       svg = rsvg.Handle('tiger.svg')
       svg.render_cairo(ctx)

       rgba[:,:,0] = brga[:,:,2]
       rgba[:,:,1] = brga[:,:,1]
       rgba[:,:,2] = brga[:,:,0]
       rgba[:,:,3] = brga[:,:,3] #alpha

       data24[:,:,0] = brga[:,:,2]
       data24[:,:,1] = brga[:,:,1]
       data24[:,:,2] = brga[:,:,0]

       img = wx.ImageFromData(imgW, imgH, data24)
       bmp = wx.BitmapFromImage(img)
#        bmp = wx.BitmapFromBufferRGBA(imgW, imgH, rgba) #wxPython 2.8

       static_bmp = wx.StaticBitmap(self, -1, bmp)
       self.Show(True)

if __name__ == '__main__':
       app = wx.PySimpleApp()
       frame = TestFrame(None, wx.ID_ANY, 'test rsvg', (200, 200), (800, 800))
       app.MainLoop()


I see in the librsvg API doc that there is a function RsvgSizeFunc()
which I imagine can be used for changing the image size.

Can anyone tell me how I might go about scaling my rendered image
using the python bindings as I would like to be able to zoom in and
out?

Regards,

Richard
_______________________________________________
pygtk mailing list   [email protected]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/

Reply via email to