Windows版GIMP3.0をインストールしましたので、そちらでPython-Fuのプラグインスクリプトを動作させるべく、色々情報集めをし、試した結果をまとめて行きたいと思います。
はじめに
GIMPを使う目的はひとそれぞれ、写真の加工に使う人もいれば、広告やポスターなどのデザインツールとして使ったり、イラストなどアートツールとして使う人もいるでしょう。有償ソフトに匹敵するとは言い切れませんが、非常に多機能で多くの人に有用なソフトであることは間違いありません。
さて、筆者個人の使い方と言いますと、動画素材として既存の静止画から、不要な部分の消去(インペイント)だったり、パーツごとにレイヤー分けしたり、結果欠損部分の加筆を行ったりする様な用途に使っています。新しい物を作るというより、既存の作品を再編集することに近い作業になると思います。
そうなると比較的、特定の機能をきめられた順番で呼び出すことが多く、ショートカットキーなどを駆使することに成りますが、指がつりそうになります。また、たまにしか使わない機能は手順を忘れがちになります。
よく使う手順を登録しておき、呼び出して実行する機能がGIMPにも備わっており、その手順はpython言語で記述することが出来ます。
こちらの記事ではその方法を調べ、実践した結果をまとめた記事になる予定です。気が向いたら随時更新の予定です。
pythonコンソールの起動
メインメニューで
フィルター(R)→Development→Python-Fu→Python Console
python-fuはpythonでGIMPを構成するオブジェクトを操作することで、手順の自動化などを行うことが目的となります。
GIMP内のpythonを使い対話形式で実行するのが、こちらのコンソールとなります。こちらのコンソールからGIMPのオブジェクトを扱うことが出来るので、プロシージャブラウザで使えそうなプロシージャを検索し、こちらのコンソールで試すことが、開発の基本手順に成りそうです。
pythonコンソールでアクティブレイヤーの取得
GIMPのプロシージャ(関数)はImage(Drawable)やlayerオブジェクトを引数に取るケースが多いので、pythonコンソールで現在選択しているアクティブレイヤーを取得する方法を調べて見ました。
# いま開いている画像(先頭=通常は現在の画像)
img = Gimp.get_images()[0]
# 選択中レイヤー(複数選択に対応)
sel_layers = img.get_selected_layers()
# “従来の active_layer 相当”を 1 枚だけ欲しい場合
layer = sel_layers[0] if sel_layers else None
print(layer.get_name() if layer else "no layer")
# 背景←レイヤー名が表示されると成功
後はプロシージャブラウザでプロシージャを探し、コンソールで試す旅が始められます。
プロシージャブラウザの起動
メインメニューで
ヘルプ(H)→プロシージャブラウザ(B)
プロシージャブラウザで
gimp-edit-named-cut
の場合、Python-Fuでは
Gimp.edit_named_cut()
の様に最初のgimpがGimpオブジェクトに相当し、その後の-(ハイフン)は_(アンダーバー)に読み替える感じです。(曖昧)
プラグインの登録
対話型コンソールでもpythonスクリプトを実行することが出来ますが、毎度コンソールを建て上げてコードを用意するのは面倒です。
定型的なスクリプトはプラグインとして登録しフィルターメニューから呼び出して実行出来ると便利です。
プラグインファイルを保存するディレクトリは設定のフォルダから確認出来ます。
筆者の環境では以下のパスに成ります。
C:\Users\ユーザー名\AppData\Roaming\GIMP\3.0
そちらにプラグイン用のサブディレクトリを作成し、そちらにスクリプトを保存します。
プラグイン用のスクリプトは結構、メニューの登録やオプションダイアログなど、お作法的な部分も多いですが、とりあえず動けば良いという個人向けであれば、動作実績のある簡単なスクリプトを参考にすれば、色々なプラグインが作れると思います。
GIMP3を使ってみた感想
大型アップデートで内部構造が刷新されたとのことですが、UIを使ってみた感じ2.10と大きく変わった部分はぱっと見た感じは少ないと思います。アイコンなどのデザインはモダンになった印象は有ります。
レイヤーの機能が強化されているので、基本操作も変更があり慣れが必要です。
あと、これは変更なのかちょっと怪しいのですが、パスの操作が2.10とことなる部分があります。始点となるアンカーポイントの位置を変更しようとクリックするとパスが閉じられてしまい、変更することが出来ません。始点はしっかり決めてから操作するように心がけることにします。
とりあえず、始点のアンカーポイントを移動させる場合、まず、始点と終点以外のアンカーポイントをクリックし、その後始点のアンカーポイントをクリックすると移動できるようです。
レイヤーに対するフィルターが非破壊になったという事なので後からフィルターのパラメタが調整することが出来ると思われます。
もう少しマイナーバージョンが進んでからの導入でも良かった感じもしますが、時間をかけて慣れていきたいと思います。
コメント