Como usar o GDK com rapidez

7

Estou tentando usar a biblioteca gdk para reduzir uma imagem e aplicá-la a um GdkImage.

Este é o código pixbuf = Gdk.pixbuf_new_from_file(fileName) pixbuf = pixbuf.scale_simple(100, 100, Gdk.INTERP_BILINEAR)

O problema é que o Python não consegue encontrar o Gdk mesmo se eu usar tudo em letras minúsculas

Erro: pixbuf = Gdk.pixbuf_new_from_file (fileName) NameError: nome global 'Gdk' não está definido

Não sei o que devo fazer porque tentei importar o Gdk, mas nada foi alterado

    
por max246 23.06.2012 / 09:53

2 respostas

10

Tente importá-lo assim:

 from gi.repository import Gtk
 from gi.repository.GdkPixbuf import Pixbuf, InterpType

então:

 pixbuf = Pixbuf.new_from_file(filename)
 pixbuf = pixbuf.scale_simple(100, 100, InterpType.BILINEAR)

Eu recomendaria o uso do comando abaixo, pois ele é dimensionado automaticamente quando é lido. Basta especificar o tamanho (pixels) desejado da imagem:

 pixbuf = Pixbuf.new_from_file_at_size(size_x, size_y, filename)
  • O uso de scale_simple () não preserva a proporção.
  • O uso de new_from_file_at_size () preserva a proporção
por unknownone 23.06.2012 / 21:43
0

Eu tive o mesmo problema. Sua resposta quase funcionou para mim, mas recebi a seguinte mensagem de erro:

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

Mas eu encontrei a definição aqui Enums e Flags gtkmm: gdkmm :

Gdk::InterpType { 
  Gdk::INTERP_NEAREST, 
  Gdk::INTERP_TILES, 
  Gdk::INTERP_BILINEAR, 
  Gdk::INTERP_HYPER 
}

Então, para mim, funcionou quando chamei a função assim:

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

... talvez isso ajude alguém com o mesmo problema;)

    
por Sebastian 30.11.2013 / 14:38