mac instalar python user-interface image gtk pygtk

instalar - python gtk api



Escala una imagen en GTK (3)

En GTK, ¿cómo puedo escalar una imagen? Ahora mismo cargo imágenes con PIL y las escala de antemano, pero ¿hay alguna forma de hacerlo con GTK?


Cargue la imagen de un archivo usando gtk.gdk.Pixbuf para eso:

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

luego escalarlo:

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

Luego, si desea usarlo en un gtk.Image, cree el widget y configure la imagen desde el pixbuf.

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

O tal vez de forma directa:

image = gtk.image_new_from_pixbuf(pixbuf)


Escala de la imagen de la URL. ( referencia de escala )

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

* EDITAR: (arreglo de trabajo) *

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


Podría ser más efectivo simplemente escalarlos antes de cargarlos. Especialmente creo que sí, ya que utilizo estas funciones para cargar miniaturas de 96x96 desde archivos JPEG a veces muy grandes, aún muy rápido.

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