如何从网上显示图像?

时间:2010-10-18 18:29:04

标签: python gtk pygtk

我在python中编写了这个简单的脚本:

import gtk

window = gtk.Window()
window.set_size_request(800, 700)

window.show()
gtk.main()

现在我想在此窗口中加载来自网络(而不是我的电脑)的图像,如下所示:

http://www.dailygalaxy.com/photos/uncategorized/2007/05/05/planet_x.jpg

我该怎么做?

P.S。我不想下载图片!我只想加载网址中的图片。

3 个答案:

答案 0 :(得分:15)

这会从网址下载图片,但会将数据写入gtk.gdk.Pixbuf而不是文件:

import pygtk
pygtk.require('2.0')
import gtk
import urllib2

class MainWin:

    def destroy(self, widget, data=None):
        print "destroy signal occurred"
        gtk.main_quit()

    def __init__(self):
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.connect("destroy", self.destroy)
        self.window.set_border_width(10)
        self.image=gtk.Image()
        response=urllib2.urlopen(
            'http://www.dailygalaxy.com/photos/uncategorized/2007/05/05/planet_x.jpg')
        loader=gtk.gdk.PixbufLoader()
        loader.write(response.read())
        loader.close()        
        self.image.set_from_pixbuf(loader.get_pixbuf())
        # This does the same thing, but by saving to a file
        # fname='/tmp/planet_x.jpg'
        # with open(fname,'w') as f:
        #     f.write(response.read())
        # self.image.set_from_file(fname)
        self.window.add(self.image)
        self.image.show()
        self.window.show()

    def main(self):
        gtk.main()

if __name__ == "__main__":
    MainWin().main()

答案 1 :(得分:3)

  1. 下载图片。关于如何使用python下载文件的谷歌,有易于使用的库。

  2. 将图像加载到窗口小部件中。查看如何在GTK中显示图像。

  3. 对于缺乏细节感到抱歉,但答案会很长,你还可以更好地阅读其他地方的这些主题。

    希望它有所帮助!

答案 2 :(得分:1)

这是一个使用WebKit的简单脚本:

#!/usr/bin/env python
import gtk
import webkit

window = gtk.Window()
window.set_size_request(800, 700)
webview = webkit.WebView()
window.add(webview)
window.show_all()

webview.load_uri('http://www.dailygalaxy.com/photos/uncategorized/2007/05/05/planet_x.jpg')

gtk.main()

请注意,这实际上是下载图像。