2010-10-18 43 views
6

Tôi đã viết kịch bản này đơn giản trong python:Cách hiển thị hình ảnh từ web?

import gtk 

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

window.show() 
gtk.main() 

bây giờ tôi muốn tải trong cửa sổ này một hình ảnh từ web (và không phải từ máy tính của tôi) như thế này:

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

thế nào tôi có thể làm điều đó ?

P.S. Tôi không muốn tải xuống hình ảnh! Tôi chỉ muốn tải hình ảnh từ URL.

+0

"PS Tôi không muốn tải hình ảnh Tôi chỉ muốn tải hình ảnh từ URL. " Đây là một mâu thuẫn. "Tải" == "Tải xuống". Điều ** chỉ ** bạn làm với một hình ảnh trên web là tải xuống. Không còn lựa chọn nào khác. Bạn đang cố làm gì vậy? –

Trả lời

15

này tải các hình ảnh từ một url, nhưng viết dữ liệu vào một gtk.gdk.Pixbuf thay vì vào một tập tin:

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. Tải xuống hình ảnh. Google về cách tải xuống các tệp bằng python, có các thư viện dễ sử dụng cho điều đó.

  2. Tải hình ảnh vào tiện ích. Tra cứu cách hiển thị hình ảnh trong GTK.

Xin lỗi vì thiếu chi tiết, nhưng câu trả lời sẽ lâu và bạn vẫn nên đọc những chủ đề đó ở nơi khác.

Hy vọng điều đó sẽ hữu ích!

+0

Tôi muốn sử dụng GTK để tải xuống thay vì Python, nhưng nếu không thì có. –

+0

Tôi không muốn tải xuống hình ảnh! Tôi chỉ muốn tải hình ảnh từ URL :) – xRobot

+0

@ xRobot: Bạn nghĩ chính xác khi tải hình ảnh từ một URL có liên quan? –

1

Dưới đây là một kịch bản đơn giản sử dụng 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() 

Hãy lưu ý, mặc dù, rằng điều này trên thực tế tải hình ảnh.

+1

Nó cũng đòi hỏi pywebkitgtk, đó không phải là một yêu cầu nhỏ. –

+0

Tôi cho rằng bạn cũng có thể sử dụng libsoup, nhưng tôi nghĩ điều này phù hợp với nhu cầu của OP tốt nhất ;-) – ptomato

Các vấn đề liên quan