Как быстро использовать GDK

7

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

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

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

Ошибка: pixbuf = Gdk.pixbuf_new_from_file (имя_файла) NameError: глобальное имя «Gdk» не определено

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

    
задан max246 23.06.2012 в 07:53
источник

2 ответа

10

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

 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 () сохраняет соотношение сторон
ответ дан unknownone 23.06.2012 в 19:43
источник
0

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

AttributeError: 'gi.repository.Gdk' object has no attribute 'INTERP_BILINEAR'

Но я нашел определение здесь здесь gtkmm: gdkmm Enums и 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

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

    
ответ дан Sebastian 30.11.2013 в 13:38