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