Как использовать GDK с Quickly

Я пытался использовать библиотеку gdk для уменьшения изображения и применения его к GdkImage.

Это код pixbuf = Gdk.pixbuf_new_from_file(fileName) pixbuf = pixbuf.scale_simple(100, 100, Gdk.INTERP_BILINEAR)

Проблема в том, что python не может найти Gdk, даже если я использую все в нижнем регистре. : глобальное имя 'Gdk' не определено

Я не знаю, что мне делать, потому что я пытался импортировать Gdk, но ничего не изменилось

7
задан 23 June 2012 в 11:53

2 ответа

Попробуйте импортировать его следующим образом:

 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)
  • Использование scale_simple () не позволяет сохранить соотношение сторон.
  • Использование new_from_file_at_size () сохраняет соотношение сторон
0
ответ дан 23 June 2012 в 11:53

У меня была такая же проблема. Ваш ответ почти сработал для меня, но я получил следующее сообщение об ошибке:

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

... возможно, это поможет кому-то с такой же проблемой;)

0
ответ дан 23 June 2012 в 11:53

Другие вопросы по тегам:

Похожие вопросы: