Вы еще не сказали, чего пытаетесь достичь с помощью части кода wx Python.
Если вы просто хотите отобразить это, попробуйте следующее:
import cairosvg
import wx
class TestFrame(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
cairosvg.svg2png(url="test.svg", write_to="test.png")
img = wx.Image('test.png',wx.BITMAP_TYPE_PNG)
self.Image = wx.StaticBitmap(self, bitmap=wx.Bitmap(img))
box = wx.BoxSizer(wx.VERTICAL)
box.Add(self.Image, 0, wx.ALL, 10)
self.SetSizer(box)
self.Fit()
self.Show()
if __name__ == "__main__":
app = wx.App()
frame = TestFrame(None)
app.MainLoop()
Вы не следует использовать io.StringIO()
на png
, потому что cairosvg.svg2png(url="test.svg", write_to="test.png")
создает файл, поэтому png
на самом деле None
, а не изображение.
Помните print( your problem )
в данном случае png
, это ваш друг. Он скажет вам, что это за вещь. Для большей ясности используйте print(repr( xx ))
или print(type( xx ))
Редактировать: На основании вашего комментария может помочь следующее:
import cairosvg
import wx
class TestFrame(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
cairosvg.svg2png(url="test.svg", write_to="test.png")
img = wx.Image('test.png')
img.ConvertAlphaToMask(255,255,255)
bmp = wx.Bitmap(img)
self.Image = wx.StaticBitmap(self, bitmap=bmp)
self.Image.Bitmap.SaveFile('test.bmp', type=wx.BITMAP_TYPE_BMP)
box = wx.BoxSizer(wx.VERTICAL)
box.Add(self.Image, 0, wx.ALL, 10)
self.SetSizer(box)
self.Fit()
self.Show()
if __name__ == "__main__":
app = wx.App()
frame = TestFrame(None)
app.MainLoop()
Включает удаление прозрачности из файла png перед сохранением в виде BMP, или все это один гигантский черный шарик.
Ваше изображение в качестве примера действительно должно быть изображением .svg, а не .png