Я пытался использовать библиотеку gdk для уменьшения изображения и применения его к GdkImage.
Это код pixbuf = Gdk.pixbuf_new_from_file(fileName)
pixbuf = pixbuf.scale_simple(100, 100, Gdk.INTERP_BILINEAR)
Проблема в том, что python не может найти Gdk, даже если я использую все в нижнем регистре. : глобальное имя 'Gdk' не определено
Я не знаю, что мне делать, потому что я пытался импортировать Gdk, но ничего не изменилось
Попробуйте импортировать его следующим образом:
from gi.repository import Gtk
from gi.repository.GdkPixbuf import Pixbuf, InterpType
затем:
pixbuf = Pixbuf.new_from_file(filename)
pixbuf = pixbuf.scale_simple(100, 100, InterpType.BILINEAR)
Я бы порекомендовал использовать приведенную ниже команду, поскольку она автоматически масштабируется при считывании. Просто укажите, как большое (в пикселях) изображение, которое требуется:
pixbuf = Pixbuf.new_from_file_at_size(size_x, size_y, filename)
У меня была такая же проблема. Ваш ответ почти сработал для меня, но я получил следующее сообщение об ошибке:
AttributeError: 'gi.repository.Gdk' object has no attribute 'INTERP_BILINEAR'
Но я нашел его определение здесь gtkmm: gdkmm Enums and Flags :
Gdk::InterpType {
Gdk::INTERP_NEAREST,
Gdk::INTERP_TILES,
Gdk::INTERP_BILINEAR,
Gdk::INTERP_HYPER
}
Так что для меня это сработало, когда я вызвал функцию следующим образом:
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
... возможно, это поможет кому-то с такой же проблемой;)