您是否可以在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根据麻省理工学院的许可证在最近的帖子上写了代码,但是你的帖子太老了,所以我需要你的明确批准。谢谢