ライブラリ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をインポートしようとしたが何も変更されていないため、どうすればよいかわかりません
次のようにインポートしてみてください:
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
...おそらくこれは同じ問題を抱えている人を助けるかもしれません;)