前回は、無料の画像編集ソフト GIMP のプラグインフォルダ―のパスを確認・追加し、そのフォルダに Python で register 関数を書き、 GIMP のメニューからログ出力だけを行うプラグインのメイン関数を実行することができました。
しかし、処理に必要な引数を入力し、それを受け取る設定がまだできていません。
前回の記事:GIMP Python-Fu スクリプトメニューに自作プログラムを追加する | Compota-Soft-Press
今回は、 register 関数の引数部分を変更し、Python-Fu 自作スクリプトのメイン関数に GIMP で選択したファイルパスを引数として渡してもらい、それをログ出力します。
※ GIMP のバージョンは 2.10.34 です。
参考にする Python-Fu スクリプト
前回紹介したプラグインフォルダ―の中にはいくつか .py ファイルがありました。
その中でも、画像の色情報を参照していそうな「histogram-export.py」を参考にします。
特に設定を変えずにインストールしていれば「C:\Program Files\GIMP 2\lib\gimp\2.0\plug-ins」にあるかもしれません。
プラグインフォルダ―を .py で検索すると見つけやすいかもしれません。
register 関数の引数の設定
以下が参考にする histogram-export.py の register 関数のメニュー呼び出しの際に受け取る引数の設定です。
[(PF_IMAGE, "img", _("_Image"), None),
(PF_DRAWABLE, "drw", _("_Drawable"), None),
(PF_FILENAME, "filename", _("Histogram _File"), ""),
(PF_FLOAT, "bucket_size", _("_Bucket Size"), 1.0),
(PF_BOOL, "sample_average", _("Sample _Average"), False),
(PF_RADIO, "output_format", _("Output format"), "pixel count",
((_("Pixel count"), "pixel count"),
(_("Normalized"), "normalized"),
(_("Percent"), "percent"),
)
)
],
引数群はリスト [] で囲まれています。
その中の引数は、不変な要素群を扱うタプル () で定義されています。
参照:Pythonのデータ型(コレクション編) – Python Boot Camp Text ドキュメント
タプルの要素数は 4 つで固定で、最初は型を表す ID を指定します。
その後の 3 つの要素は、最初に指定した型によって渡すものが異なります。
今回は、画像処理で必要な PF_IMAGE, PF_DRAWABLE ファイル出力で必要な PF_FILENAME を引数に設定しました。他についても以下のサイトや plug-ins フォルダの .py ファイルなどを参照してください。
参照:3.4. はじめての Script-Fu スクリプト
[
(PF_IMAGE, "image", "Input image", None),
(PF_DRAWABLE, "drawable", "Input drawable", None),
(PF_FILENAME, "filename", _("Color Code csv _File"), "")
], #引数
次にメニューから呼び出される関数に引数を追加します。
※呼び出される関数や、メニューへの設定は前回の register 関数の説明を参照してください。
def main_sc_log_color_code_rect(image, drawable, filename):
"""main 関数の処理"""
gimp.message('hello Python-Fu Plugins!' + filename)
GIMP の起動
Python-Fu 自作スクリプトをプラグインフォルダ―に保存したら、 GIMP を起動しましょう。
スクリプトに問題が無ければ、指定した場所にメニューが追加されます。
表示されなければ、何か問題があるので、修正したり成功したときの状態に戻して再び GIMP を起動してください。
前回説明したとおり、この Python-Fu 自作スクリプトは画像が必要なスクリプトなので、画像を用意していない状態だとメニューアイテムが非活性になります。
メニュー「ファイル」→「新しい画像」などで画像を用意してから、メニューを選択しましょう。
引数に出力用のファイルパスを追加したので、ダイアログが表示されました。
引数に応じて自動的に GIMP が作ってくれた引数を入力するためのダイアログです。
ファイルパスを設定する GUI の下のテキストボックスは、ステータスバーのようです。
ヘルプボタンを押したときなどに、現在の状態の説明などが数秒表示されました。
入力ダイアログの説明文も register 関数で指定したものです。
register(
"sc_log_color_code_rect", #プロシージャの名前
"Logs the color codes of the pixels in the specified rectangle. 指定矩形内のピクセルのカラーコードをログ出力します。", #プラグインの情報
"Logs the color codes of the pixels in the specified rectangle. 指定矩形内のピクセルのカラーコードをログ出力します。", #詳しいプラグインの情報
# 略
)
ファイルパスを選択してから、ダイアログの OK ボタンを押すと、先ほど Python-Fu 自作スクリプト中の呼び出される関数に記述した。 gimp_message 関数が実行され、エラーコンソールダイアログにメッセージが出力されました。
今回は受け取った filename 引数も表示しています。
これにより、メニューを選択して表示された、入力ダイアログの情報が関数の引数として受け取ることができるようになりました。
まとめ
今回は、無料の画像編集ソフト GIMP の Python-Fu 自作スクリプトの register 関数内の引数群を設定するリストを変更しました。
GIMP でメニューを選択すると、その引数群のリストで指定した引数を入力するためのダイアログが表示され、 OK ボタンを押すことで、入力した値が引数として実行する関数に渡されることが確認できました。
参照サイト Thank You!
- GIMP – GNU Image Manipulation Program
- GIMPのPython-Fuでオレオレフィルタを書くためのあれこれ – Qiita
- Pythonのデータ型(コレクション編) – Python Boot Camp Text ドキュメント
- 3.4. はじめての Script-Fu スクリプト
- Script-Fu – GizmoLabs – だいたい CAD LISP なサイト
記事一覧 → Compota-Soft-Press
コメント