Internet-Bild in einem GUI anzeigen

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
Benutzeravatar
MaXXLy
User
Beiträge: 24
Registriert: Sonntag 25. Mai 2008, 17:51

Hallo Leute,

ich parse einen RSS-Feed in dem sich auch URLs zu kleine Bildchen befinden. Um diese zur Laufzeit in einem GTk anzuzeigen, speichere ich diese in einen Tempfile. Etwa so:

Code: Alles auswählen

from urllib import urlretrieve
import tempfile
			
id, temp_file = tempfile.mkstemp() 
			
urlretrieve(XML-Image, temp_file)
		
img = gtk.Image()
img.set_from_file(temp_file)
img.show()
Ich wäre nicht ich, wenn ich mir nicht unsicher wär!
Ist das eine gängige Lösung oder gibt es noch Bessere? Kann ich das auch so bewerkstelligen, dass ich nicht speichern muss?

Danke für Erleuchtungen
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

MaXXLy hat geschrieben:Ist das eine gängige Lösung oder gibt es noch Bessere? Kann ich das auch so bewerkstelligen, dass ich nicht speichern muss?
Natürlich, denn zwischenspeichern ist doch mehr als hässlich. Unnötiger Festplatten-E/A. ``gtk.Image.set_from_pixbuf`` wäre schon besser. Wie das geht, kannst du in meinem solistic.py nachsehen, dort nutze ich das. In deinem Fall wirst du keinen ``gtk.gdk.PixbufLoader`` brauchen, nehme ich an, da reicht ``gtk.gdk.Pixbuf``.

Ich habe es mir erlaubt den Thread zu verschieben. Der hat schließlich mehr mit PyGTK was zu tun als mit Allgemeinen Fragen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
MaXXLy
User
Beiträge: 24
Registriert: Sonntag 25. Mai 2008, 17:51

Ich wusste: Du kannst es besser! :!:
Aber, ich hole auf! :D

Ich habe Folgendes:

Code: Alles auswählen

import urllib
			
url_handler = urllib.urlopen(List[2])
img_data = url_handler.read()
			
img_loader = gtk.gdk.PixbufLoader()
img_loader.write(img_data)
			
img_buffer = img_loader.get_pixbuf()	
			
img = gtk.Image()	
img.set_from_pixbuf(img_buffer)
			
url_handler.close()
img_loader.close()
			
self.dialog.action_area.pack_start(img)		
Aus der Beschreibungen
gtk.gdk.Pixbuf — an object containing a client side image.
gtk.gdk.PixbufLoader — an object providing application-driven progressive image loading

entnehme ich, dass Pixbuf nicht funktioniert.
Wie siehst Du das?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

PixbufLoader ist nur sinnvoll, wenn du Bilder hast, die allmählich aufgebaut werden sollen, je nachdem wie viele Daten schon da sind, wie eben Interlaced PNGs, JPEGs etc. Wenn du aber schon die ganze Datei in einem Stück hast (und das hast du ja nach Zeile 5), dann reicht ein Pixbuf allemal.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
MaXXLy
User
Beiträge: 24
Registriert: Sonntag 25. Mai 2008, 17:51

Ich noch mal: Ich bekomme es nicht hin. Habe auch nur Beispiele mit PixbufLoader() im Netz gefunden. Wie bekomme ich das Bild mit urllib in das gtk.Image?

Max
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dann nimm eben den PixbufLoader, schadet ja auch nichts.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten