Dựa trên câu trả lời khác, đây là một chức năng để đọc một tập tin SVG thành một hình ảnh pygame - bao gồm chỉnh thứ tự kênh màu và mở rộng quy mô:
def pygame_svg(svg_file, scale=1):
svg = rsvg.Handle(file=svg_file)
width, height= map(svg.get_property, ("width", "height"))
width*=scale; height*=scale
data = array.array('c', chr(0) * width * height * 4)
surface = cairo.ImageSurface.create_for_data(data, cairo.FORMAT_ARGB32, width, height, width*4)
ctx = cairo.Context(surface)
ctx.scale(scale, scale)
svg.render_cairo(ctx)
#seemingly, cairo and pygame expect channels in a different order...
#if colors/alpha are funny, mess with the next lines
import numpy
data= numpy.fromstring(data, dtype='uint8')
data.shape= (height, width, 4)
c= data.copy()
data[::,::,0]=c[::,::,1]
data[::,::,1]=c[::,::,0]
data[::,::,2]=c[::,::,3]
data[::,::,3]=c[::,::,2]
image = pygame.image.frombuffer(data.tostring(), (width, height),"ARGB")
return image
Có một câu trả lời khác nhau/thư viện áp dụng đến năm 2011 ? (Bởi vì nó đã được 3 năm). Tôi đã nhìn thấy squirtle được sử dụng để tải bản đồ được tạo ra trong ** inkscape **. – ninMonkey
Squirtle vẫn không hỗ trợ nhiều SVG afaik và làm cho nó chạy với PyGame có lẽ cũng đòi hỏi một số công việc. Tôi đang tìm kiếm một thời gian dài để hỗ trợ bản vẽ SVG trong Windows và 64 Bit Python và tôi nghĩ rằng tôi phải từ bỏ. – Trilarion