Trong GTK, làm cách nào để chia tỷ lệ hình ảnh? Ngay bây giờ tôi tải hình ảnh với PIL và quy mô chúng trước, nhưng có cách nào để làm điều đó với GTK?Quy mô hình ảnh trong GTK
13
A
Trả lời
15
tải hình ảnh từ một tập tin sử dụng gtk.gdk.Pixbuf cho rằng:
import gtk
pixbuf = gtk.gdk.pixbuf_new_from_file('/path/to/the/image.png')
sau đó mở rộng nó:
pixbuf = pixbuf.scale_simple(width, height, gtk.gdk.INTERP_BILINEAR)
Sau đó, nếu bạn muốn sử dụng nó trong một gtk.Image, crate các widget và thiết lập hình ảnh từ pixbuf.
image = gkt.Image()
image.set_from_pixbuf(pixbuf)
Hoặc có thể theo một cách trực tiếp:
image = gtk.image_new_from_pixbuf(pixbuf)
6
Nó có thể là hiệu quả hơn chỉ đơn giản là mở rộng quy mô chúng trước khi tải. Tôi đặc biệt nghĩ như vậy kể từ khi tôi sử dụng các chức năng này để tải trong hình thu nhỏ 96x96 từ đôi khi JPEG rất lớn, vẫn còn rất nhanh.
gtk.gdk.pixbuf_new_from_file_at_scale(..)
gtk.gdk.pixbuf_new_from_file_at_size(..)
1
Tỷ lệ hình ảnh từ 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: (làm việc ra sửa chữa) *
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
Chúng ta có thể có giải pháp này trong C cũng .... tôi đang tìm kiếm cùng một thứ nhưng dưới C và GTK + .... Sử dụng GtkImage * image = gtk_image_new_from_file() – User7723337