web-dev-qa-db-ja.com

GDKをQuicklyで使用する方法

ライブラリ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(fileName)NameError:グローバル名 'Gdk'が定義されていません

Gdkをインポートしようとしたが何も変更されていないため、どうすればよいかわかりません

7
max246

次のようにインポートしてみてください:

 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()を使用するとnotはアスペクト比を保持します。
  • new_from_file_at_size()を使用すると、アスペクト比が保持されます
10
unknownone

同じ問題がありました。あなたの答えはほとんど私のために働いたが、私は次のエラーメッセージを受け取った:

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
Sebastian