2010-10-18 66 views
6

我已經用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.我不想下載圖像!我只是想從URL中加載圖片。

+0

「PS我不想下載的圖片我只是想加載從圖像URL「。這是一個矛盾。 「加載」==「下載」。你只需要在網上下載一張圖片就可以下載。沒有其他選擇。你想做什麼? – 2010-10-18 20:24:30

回答

15

此下載從URL的形象,但數據寫入到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() 
3
  1. 下載此圖片。谷歌關於如何使用python下載文件,有一些易於使用的庫。

  2. 將圖像加載到小部件中。查看如何在GTK中顯示圖像。

對不起,由於缺乏細節,但答案會變長,你仍然可以在其他地方閱讀這些主題。

希望它有幫助!

+0

我會使用GTK來下載它,而不是Python,但是否則會。 – 2010-10-18 18:39:02

+0

我不想下載圖像!我只是想從URL加載圖像:) – xRobot 2010-10-18 18:40:42

+0

@xRobot:你究竟認爲從一個URL中加載圖像到底是什麼? – 2010-10-18 18:42:18

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

。注意到,雖然,這確實其實下載的圖像。

+1

它也需要pywebkitgtk,這不是一個小的要求。 – 2010-10-18 18:57:48

+0

我想你也可以使用libsoup,但我認爲這符合OP的最佳需求;-) – ptomato 2010-10-18 19:04:22