2009-08-12 5 views

Répondre

15

Chargez l'image à partir d'un fichier en utilisant gtk.gdk.Pixbuf pour que:

import gtk 
pixbuf = gtk.gdk.pixbuf_new_from_file('/path/to/the/image.png') 

échelle puis:

pixbuf = pixbuf.scale_simple(width, height, gtk.gdk.INTERP_BILINEAR) 

Ensuite, si vous voulez l'utiliser dans un gtk.Image, Cacher le widget et définir l'image à partir du pixbuf.

image = gkt.Image() 
image.set_from_pixbuf(pixbuf) 

Ou peut-être d'une manière directe:

image = gtk.image_new_from_pixbuf(pixbuf) 
+0

Peut-on avoir cette solution dans C aussi .... je cherche même chose, mais en C et GTK + .... Utilisation de GtkImage * image = gtk_image_new_from_file() – User7723337

6

Il est peut-être plus efficace de les étendre simplement avant le chargement. Je le pense surtout car j'utilise ces fonctions pour charger en miniatures 96x96 des fichiers JPEG parfois très volumineux, toujours très rapides.

gtk.gdk.pixbuf_new_from_file_at_scale(..) 
gtk.gdk.pixbuf_new_from_file_at_size(..) 
1

Mettre à l'échelle l'image à partir de l'URL. (scale reference)

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

     self.response=urllib2.urlopen(
      'http://192.168.1.11/video/1024x768.jpeg') 

     self.loader=gtk.gdk.PixbufLoader()   
     self.loader.set_size(200, 100) 
     #### works but throwing: glib.GError: Unrecognized image file format  
     self.loader.write(self.response.read()) 
     self.loader.close() 
     self.image.set_from_pixbuf(self.loader.get_pixbuf()) 

     self.window.add(self.image) 
     self.image.show() 


     self.window.show() 

    def main(self): 
     gtk.main() 

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

* EDIT: (travailler fixe) *

try: 
    self.loader=gtk.gdk.PixbufLoader()   
    self.loader.set_size(200, 100) 

      # ignore tihs: 
      # glib.GError: Unrecognized image file format  

    self.loader.write(self.response.read()) 
    self.loader.close() 
    self.image.set_from_pixbuf(self.loader.get_pixbuf()) 

except Exception, err: 
    print err 
    pass