在GTK中缩放图像
在GTK中,怎么调整图片的大小呢?现在我用PIL加载图片,并在加载之前就调整好大小,但有没有办法直接在GTK中做到这一点呢?
6 个回答
2
从网址缩放图片。(缩放参考)
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()
*编辑: (找到解决办法) *
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
10
在加载之前先调整图片的大小可能会更有效。我特别这么认为,因为我用这些函数来加载96x96的缩略图,而这些缩略图有时是从非常大的JPEG图片中提取出来的,速度依然很快。
gtk.gdk.pixbuf_new_from_file_at_scale(..)
gtk.gdk.pixbuf_new_from_file_at_size(..)
27
首先,使用gtk.gdk.Pixbuf从文件中加载图片:
import gtk
pixbuf = gtk.gdk.pixbuf_new_from_file('/path/to/the/image.png')
接下来,调整图片的大小:
pixbuf = pixbuf.scale_simple(width, height, gtk.gdk.INTERP_BILINEAR)
然后,如果你想在gtk.Image中使用这张图片,可以创建一个控件,并从pixbuf中设置图片。
image = gtk.Image()
image.set_from_pixbuf(pixbuf)
或者你也可以直接这样做:
image = gtk.image_new_from_pixbuf(pixbuf)