您是否可以在python程序中显示图像(不使用pygame)?

您是否可以在python程序中显示图像(不使用pygame)?,python,image,svg,tkinter,rsvg,Python,Image,Svg,Tkinter,Rsvg,我想做一些类似的事情: import image image.display_image('http://upload.wikimedia.org/wikipedia/commons/8/84/Example.svg') 它会以图像的形式出现 另外,我想要PNG或JPEG,而不是GIF。这个问题有点老了,但是关于如何轻松做到这一点的信息在网上不容易找到,我将这个答案发布在网上,希望它能对其他人在未来有所帮助 要将SVG光栅化并将其放入ImageTk.PhotoImage对象中,

我想做一些类似的事情:

    import image
    image.display_image('http://upload.wikimedia.org/wikipedia/commons/8/84/Example.svg')
它会以图像的形式出现


另外,我想要PNG或JPEG,而不是GIF。

这个问题有点老了,但是关于如何轻松做到这一点的信息在网上不容易找到,我将这个答案发布在网上,希望它能对其他人在未来有所帮助

要将SVG光栅化并将其放入ImageTk.PhotoImage对象中,可以在用于tkinter gui的类中执行此操作:

def svgPhotoImage(self,file_path_name):
        import Image,ImageTk,rsvg,cairo
        "Returns a ImageTk.PhotoImage object represeting the svg file" 
        # Based on pygame.org/wiki/CairoPygame and http://bit.ly/1hnpYZY        
        svg = rsvg.Handle(file=file_path_name)
        width, height = svg.get_dimension_data()[:2]
        surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, int(width), int(height))
        context = cairo.Context(surface)
        #context.set_antialias(cairo.ANTIALIAS_SUBPIXEL)
        svg.render_cairo(context)
        tk_image=ImageTk.PhotoImage('RGBA')
        image=Image.frombuffer('RGBA',(width,height),surface.get_data(),'raw','BGRA',0,1)
        tk_image.paste(image)
        return(tk_image)
然后通过以下方式在框架小部件(如大型机)上显示图像:

tk_image=self.svgPhotoImage(filename)
mainFrame.configure(image=tk_image)
image.save(filename) # Image format is autodected via filename extension
如果要保存图片,可以返回图像而不是tk_图像,并按以下方式保存:

tk_image=self.svgPhotoImage(filename)
mainFrame.configure(image=tk_image)
image.save(filename) # Image format is autodected via filename extension

您可以使用tkinter在画布上显示图像。类似的,你能根据麻省理工学院的许可证来许可代码吗?像所有的SO帖子一样,它应该根据知识共享署名共享来许可。了解如何安装rsvg和cairo吗?
pip安装pycairo
对于rsvg来说,很难回答,因为它高度依赖于您的平台。谷歌是你在这里的朋友@珍诺利维尔:谢谢你的回复。事情是sa的CC和GPL,它的新版本可以再授权给它,比MIT/expat更具限制性。StackO根据麻省理工学院的许可证在最近的帖子上写了代码,但是你的帖子太老了,所以我需要你的明确批准。谢谢