J’essaie d’utiliser la bibliothèque gdk pour réduire une image et l’appliquer à une image Gdk.
C’est le code pixbuf = Gdk.pixbuf_new_from_file(fileName) pixbuf = pixbuf.scale_simple(100, 100, Gdk.INTERP_BILINEAR)
Le problème est que python ne peut pas trouver Gdk même si j’utilise tout en minuscule
Erreur: pixbuf = Gdk.pixbuf_new_from_file (NomFichier) NameError: le nom global ‘Gdk’ n’est pas défini.
Je ne sais pas ce que je devrais faire car j’ai essayé d’importer Gdk mais rien n’a changé
Essayez de l’importer comme ceci:
from gi.repository import Gtk from gi.repository.GdkPixbuf import Pixbuf, InterpType
puis:
pixbuf = Pixbuf.new_from_file(filename) pixbuf = pixbuf.scale_simple(100, 100, InterpType.BILINEAR)
Je vous recommande d’utiliser la commande ci-dessous, car il la redimensionne automatiquement à la lecture. Spécifiez simplement la taille (en pixels) de l’image souhaitée:
pixbuf = Pixbuf.new_from_file_at_size(size_x, size_y, filename)
J’ai eu le même problème. Votre réponse a presque fonctionné pour moi, mais j’ai eu le message d’erreur suivant:
AtsortingbuteError: 'gi.repository.Gdk' object has no atsortingbute 'INTERP_BILINEAR'
Mais j’en ai trouvé la définition ici gtkmm: gdkmm Enums and Flags :
Gdk::InterpType { Gdk::INTERP_NEAREST, Gdk::INTERP_TILES, Gdk::INTERP_BILINEAR, Gdk::INTERP_HYPER }
Donc pour moi ça a marché quand j’ai appelé la fonction comme ceci:
from gi.repository import Gtk, Gdk from gi.repository.GdkPixbuf import Pixbuf ... pixbuf = Pixbuf.new_from_file('mypic.gif') pixbuf = pixbuf.scale_simple(desired_width, desired_height, 2) # 2 := BILINEAR
… Peut-être que cela aide quelqu’un avec le même problème;)