いきなり日曜大工

好きなことを好きなだけやる

マイ地図タイルを作ろう #3 続・GIMP-Python プラグイン入門

GIMP Python でプラグイン開発、の続き

要領が悪いのかまとめがおわりません。

GIMP Module Procedures と The Procedural Database (PDB)

では実際にスクリプトを書くのにどんな GIMP のオブジェクトや操作関数があり、どうやって調べるのか。

GIMP Python で使える画像操作ライブラリには2つのグループがあり、1つは GIMP Module Procedures、もう1つは The Procedural Database (PDB) といい、どちらも gimpfu モジュールをインポートすることで利用可能になります。

GIMP Module Procedures

GIMP Module Procedures は gimp.* として呼び出すことができ、画像・レイヤーなどの基本オブジェクトと基本的な操作関数群(描画色・背景色の get/set など)、プラグイン関連の関数などを提供します。

具体的なオブジェクトの種類や関数群については ドキュメント にリストと簡単な説明が載っています。

The Procedural Database (PDB)

The Procedural Database (PDB) は、GIMPのライブラリ関数群と、ありがたい先人達によるプラグインを組み込んだプロシージャ群のようです。こちらは gimp.pdb.* または pdb.* として呼び出すことができます。

PDB に登録されているプロシージャは GIMP の Help > Procedure Browser で検索したり、プロシージャごとのヘルプを見ることができます。

このオブジェクト仕様とかプロシージャを探す作業がスクリプト書きで一番時間がかかるところ(自分の場合)なんですが、自分は Procedure Browser のほかに、GIMP 開発者のためのプラグイン開発ドキュメント(C言語用) GIMP Developer Resources – Plug-In Development や、Gimp PDB Documentation なども見て探しました。

ちなみに自分で作って登録したプラグインも、Procedure Browser で登録済みのプロシージャとして参照できるようになります。このとき表示されるヘルプの内容はスクリプトの register 関数の引数に指定した情報が反映されます。

Python-Fu コンソール の使い方

GIMP メニューの Filters > Python-Fu > Console で起動します。

ヘルプ

>>> from gimpfu import *
>>> help(gimp.Image)
>>> dir(gimp.Image)
>>> type(gimp.Image)

画像とレイヤーの特定

Python-Fu コンソールでもスクリプトと同じようにオブジェクトを扱いプロシージャを実行できますが、プラグイン登録したスクリプトみたいに最初に画像を渡してくれるギミックがないので、ここでは手動で受け取ります。

GIMP で画像 lendl.jpg と edberg.jpg を開いているものとします。

Lendl (lendl.jpg)
Edberg (edberg.jpg)

以下、画像を開いている状態で Python-Fu コンソールから画像とレイヤーの情報を見て、いるものを変数に収めて加工するまでの流れです。

>>> from gimpfu import *
>>> gimp.image_list()
[<gimp.Image '[edberg]'>, <gimp.Image '[lendl]'>]
>>> image = gimp.image_list()[0]
>>> image
<gimp.Image '[edberg]'>
>>> image.layers
[<gimp.Layer 'edberg.jpg'>]
>>> layer = image.layers[0]
>>> layer
<gimp.Layer 'edberg.jpg'>
>>> pdb.gimp_invert(layer)         # 反転
Lendl
Edberg (inverted)

画像を1枚読み込んだだけの状況であれば、要するにかいつまんで

>>> from gimpfu import *
>>> image = gimp.image_list()[0]
>>> layer = image.layers[0]

これで画像とレイヤーをそれぞれ変数に収めることができます。あとはエドバーグを反転するなり逆さにするなり思いのままです。

定数

スクリプトで使える GIMP の定数一覧を見ることもできます。これ結構大事です。

>>> import gimpenums
>>> help(gimpenums)

どれが何の定数か説明がまったくないのが泣けますが、プロシージャのヘルプや GIMP Reference Manuals for the GIMP 2.0 API (開発者向け、C言語)の定数定義部分を見ればだいたいのアタリはつきます。

次回やっと Python デビューです。