Jak skalować obraz w GTK? W tej chwili ładuję obrazy za pomocą PIL i przeskalowuję je wcześniej, ale czy jest jakiś sposób na zrobienie tego za pomocą GTK?Skalowanie obrazu w GTK
13
A
Odpowiedz
15
Załaduj obraz z pliku, używając do tego gtk.gdk.Pixbuf:
import gtk
pixbuf = gtk.gdk.pixbuf_new_from_file('/path/to/the/image.png')
następnie przeskalować go:
pixbuf = pixbuf.scale_simple(width, height, gtk.gdk.INTERP_BILINEAR)
Następnie, jeśli chcesz używać go w gtk.Image, skrzynia widget i ustaw obraz z pixbuf.
image = gkt.Image()
image.set_from_pixbuf(pixbuf)
A może w sposób bezpośredni:
image = gtk.image_new_from_pixbuf(pixbuf)
6
To może być bardziej skuteczne, aby po prostu przeskalować je przed załadowaniem. Sądzę, że tak jest, ponieważ używam tych funkcji do ładowania w miniaturach 96x96 z czasami bardzo dużych plików JPEG, nadal bardzo szybko.
gtk.gdk.pixbuf_new_from_file_at_scale(..)
gtk.gdk.pixbuf_new_from_file_at_size(..)
1
Skaluj obraz z adresu 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: (wypracowanie fix) *
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
Powiązane problemy
- 1. skalowanie obrazu z CSS
- 2. HTML5 Canvas skalowanie obrazu Issue
- 3. Skalowanie obrazów Bootstrap Skalowanie
- 4. Android: zatrzymaj skalowanie obrazu w dół
- 5. Skalowanie obrazu w matplotlib bez zmiany osi
- 6. Przenoszenie obrazu i skalowanie w iOS5
- 7. Tworzenie wykresów w Gtk/Gtk #
- 8. Motyw Gtk w GTK # (Windows)
- 9. iTextSharp Skalowanie obrazu do pełnej strony
- 10. skalowanie obrazu, ale zachowaj jego proporcje.
- 11. Czy skalowanie obrazu kodu kreskowego go uszkadza?
- 12. Skalowanie SVG w Javie
- 13. Skalowanie/przekształcanie obrazu w systemie Android nie zmienia obszaru klikalnego
- 14. Niespójne skalowanie obrazu w systemie Android dla Androida: scaleType = "fitCenter"
- 15. Background-size: nie obejmować skalowanie obrazu w div
- 16. Skalowanie wygenerowanej zawartości w CSS
- 17. Skalowanie/interpolacja UIImageView
- 18. menu Gtk z ikonami
- 19. Declarative GTK
- 20. Skalowanie SVG w javascript
- 21. Skalowanie w poziomie Scrapyd
- 22. Skalowanie obiektu w three.js
- 23. Skalowanie ikonki w SDL
- 24. Skalowanie ElasticSearch
- 25. Skalowanie Drupala
- 26. Android skalowanie ImageView z setImageBitmap
- 27. Kompilowanie C/GTK w Eclipse
- 28. Używanie GTK + w Visual C++
- 29. Jak zainstalować gtk w python2.7?
- 30. Utwórz pogrubioną etykietę w GTK +
Czy mamy to rozwiązanie również w C .... szukam samej rzeczy, ale pod C i GTK + .... Używanie GtkImage * image = gtk_image_new_from_file() – User7723337