Python-FuでGimpのFilter
Gimpで画像を処理させるときに,以前はScript-Fuを使っていてscheme言語で書くのが難しかったが,最近はPython-Fuを使えるようになって,楽になった. ちなみに私がpythonを使うのは,micropythonかPython-Fuが主な気がする. 少しは慣れて来たのだが,Filterなどの高度な処理をPython-Fuから行う方法が分からなかった. Gimp3.0になったし,新たに調べてみたら,やり方が分かったので,書いておきたい.
まず,画像の一部を選択した状態にする. Filters - Development - Python-Fu - Python Consoleからコンソールを開いて,以下のコマンドを実行すると,medianフィルターが適用される.
img=Gimp.get_images()[0]
lyr=Gimp.Image.get_layers(img)
chl=Gimp.Selection.save(img) #unselect layer
Gimp.Image.set_selected_layers(img,lyr)
drw=Gimp.Image.get_selected_drawables(img)[0]
flt = Gimp.DrawableFilter.new(drw, "gegl:median-blur", "")
fc = flt.get_config()
fc.set_property("radius", 10)
drw.append_filter(flt)
filterやそのpropertyの名前は,GEGLのサイトで調べることができる. get_configで作ったものに対してset_propertyをするという少し回りくどい設定をしてから,適用する. append_filterでは元の画像を保持したままfilterが非破壊に適用されますが,元の画像を保持する必要が無いときにはmerge_filterを使って下さい.