如何从网络显示图片?

6 投票
3 回答
11172 浏览
提问于 2025-04-16 05:41

我写了一个简单的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

我该怎么做呢?

附注:我不想下载这张图片!我只是想从这个网址加载这张图片。

3 个回答

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()

不过要注意,这个脚本实际上是会下载图片的。

3
  1. 下载图片。你可以在网上查一下怎么用Python下载文件,有一些简单易用的库可以帮助你。

  2. 把图片加载到一个小部件里。可以查一下怎么在GTK中显示图片。

抱歉没有提供更多细节,不过如果详细讲解会很长,你还是去其他地方看看这些内容会更好。

希望这能帮到你!

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()

撰写回答