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 trouve pas 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
ensuite:
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 que vous souhaitez:
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:
AttributeError: 'gi.repository.Gdk' object has no attribute '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, cela a fonctionné 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;)