Dans GTK, comment mettre à l'échelle une image? En ce moment je charge des images avec PIL et les redimensionne au préalable, mais y a-t-il un moyen de le faire avec GTK?Mise à l'échelle d'une image dans GTK
13
A
Répondre
15
Chargez l'image à partir d'un fichier en utilisant gtk.gdk.Pixbuf pour que:
import gtk
pixbuf = gtk.gdk.pixbuf_new_from_file('/path/to/the/image.png')
échelle puis:
pixbuf = pixbuf.scale_simple(width, height, gtk.gdk.INTERP_BILINEAR)
Ensuite, si vous voulez l'utiliser dans un gtk.Image, Cacher le widget et définir l'image à partir du pixbuf.
image = gkt.Image()
image.set_from_pixbuf(pixbuf)
Ou peut-être d'une manière directe:
image = gtk.image_new_from_pixbuf(pixbuf)
6
Il est peut-être plus efficace de les étendre simplement avant le chargement. Je le pense surtout car j'utilise ces fonctions pour charger en miniatures 96x96 des fichiers JPEG parfois très volumineux, toujours très rapides.
gtk.gdk.pixbuf_new_from_file_at_scale(..)
gtk.gdk.pixbuf_new_from_file_at_size(..)
1
Mettre à l'échelle l'image à partir de l'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: (travailler fixe) *
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
Questions connexes
- 1. Gtkmm - "Gtk :: DrawingArea" dans "Gtk :: ScrolledWindow"?
- 2. PopupMenu à Gtk #
- 3. Utiliser FileChooserButton dans GTK +
- 4. Détruire Windows dans GTK #
- 5. fichiers d'en-tête dans les sous-répertoires (par exemple gtk/gtk.h vs gtk-2.0/gtk/gtk.h)
- 6. Compiler C/GTK dans Eclipse
- 7. Empiler des widgets dans Gtk +
- 8. Accéder à une image dans une image
- 9. Animations fluides utilisant GTK +
- 10. Suppression (ou mise à jour) d'une image de RichTextBox
- 11. comment contourner une mise à l'échelle image java bug
- 12. Graphics.DrawImage logo mise à l'échelle incorrecte sur une grande image
- 13. Liaison Gtk # NodeView à un IList?
- 14. Image non mise à jour dans l'élément ajouté à la liste personnalisée
- 15. Windows.Forms et gtk # interopérabilité?
- 16. Empilement de widgets GTK +
- 17. GTK + GTkStatusIcon ne fonctionne pas dans Win32
- 18. Attraper l'événement de défilement dans gtk #
- 19. GTK # pièges communs
- 20. gtk widget composite focus
- 21. Python GTK MVC
- 22. presses clés GTK + (gtkD)
- 23. Implémentation GTK de MessageBox
- 24. Comment obtenir la coloration syntaxique de GTK dans GEdit?
- 25. Natif GTK # sur Windows?
- 26. Client Twitter GTK
- 27. Comment arrêter le rognage d'une image transformée (mise à l'échelle) dans une grille (silverlight)
- 28. Comment cacher une fenêtre Gtk #?
- 29. Mise à l'échelle des images dans IE
- 30. Texte riche en gtk-sharp?
Peut-on avoir cette solution dans C aussi .... je cherche même chose, mais en C et GTK + .... Utilisation de GtkImage * image = gtk_image_new_from_file() – User7723337