無料の画像編集ソフト GIMP には Python-Fu という Python 形式で画像処理をプログラムから実行する機能があります。
前回は、 Python コンソールを起動して、一行の命令文でログ出力を行いました。
前回の記事:無料の画像編集ソフト GIMP のスクリプトで出力したログの保存 | Compota-Soft-Press
今回は、GIMP で実行する自作のプログラム .py (python) スクリプトのファイルを所定のプラグインフォルダに配置し、GIMP のメニューから実行する手順を紹介します。
※ GIMP のバージョンは 2.10.34 です。
メニューから呼び出せる自作プラグインファイルの配置
GIMP では、メニュー「フィルター」→「Python-Fu」の先に Python コンソールを表示するメニューアイテムがあります。
前回はそのコンソールで一行の命令文を打ち、ログ出力をしました。
今回は、複数行の Python スクリプトを手軽に実行するため、自作の Python スクリプトを実行するためのメニューアイテムを追加します。
※うまく認識しなければ GIMP を再起動してください。
プラグインフォルダの確認・追加
メニュー「編集」→「設定」で「GIMP の設定」ウィンドウを表示し、左のツリーリストで「フォルダー」→「プラグイン」を選択すると、プラグイン用フォルダーというページが表示され、プラグインを置くフォルダのパスのリストが表示されます。
新しく追加したい場合は、リストの上にあるテキストボックスに新しいフォルダパスを入力したあと、左の+のついたボタンを押すことで、プラグインフォルダを追加できます。
プラグインフォルダの変更は GIMP の再起動後に有効になります。
python スクリプトの作成と配置
確認したプラグインフォルダに、自作の python スクリプトファイル (.py) を置いてから、 GIMP を起動します。
問題が無ければ GIMP のメニューに自作の python スクリプトファイルの関数を呼び出すメニューが追加されます。
python スクリプト(基本)の作成
以下の python スクリプトでは、 GIMP のメニューへの登録を行う register 関数を呼び出しています。
※ 2 行目にあるように文字コードは utf-8 で保存してください。
#!/usr/bin/python
# -*- coding: utf-8 -*-
from gimpfu import *
def plugin_main():
"""main 関数の処理"""
gimp.message('hello world!')
register(
"sample_pythonfu", #プロシージャの名前
"plug-in info", #プラグインの情報
"help", #詳しいプラグインの情報
"author", #プラグインの著者
"author", #コピーライト
"April 2020", #日付
"sample_plgin", #メニューに表示するプラグイン名
"", #画像タイプ
[], #引数
[], #戻り値
plugin_main, # main 関数名
menu="<Image>/PyPlgin" #プラグインの登録場所
)
main()
上記のコードは、「作成した Python-Fu スクリプトを GIMP のメニューに登録する方法 | ランディネットワーク」を引用しています。
この register 関数のパラメータを変更して、さらに、前回実行した gimp_message 関数を実行するようにしてみます。
#!/usr/bin/python
# -*- coding: utf-8 -*-
from gimpfu import *
def main_sc_log_color_code_rect():
"""main 関数の処理"""
pdb.gimp_message('hello Python-Fu Plugins!')
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. 指定矩形内のピクセルのカラーコードをログ出力します。", #詳しいプラグインの情報
"SakuraCrowd", #プラグインの著者
"SakuraCrowd", #コピーライト
"2023/04", #日付
"sc_log_color_code_rect", #メニューに表示するプラグイン名
"RGB", #画像タイプ https://gimpbook.com/scripting/notes.html
[], #引数
[], #戻り値
main_sc_log_color_code_rect, # main 関数名
menu="<Image>/SakuraCrowd/log_color_code_rect" #プラグインの登録場所
)
main()
Visual Studio Code で作成していると main 関数が定義されていませんと警告がでますが、 GIMP の方で準備してくれているようなので、定義しなくても大丈夫です。
画像タイプ (18 行目) には RGB の他に RGBA や RGB* もあります。
RGB* は RGB でも RGBA でも良く、他はそれぞれαチャネルの有無が決められています。
参照:Notes on GIMP Scripting
main 関数名のパラメータでは、メニューを選択した際に呼ばれる関数名を指定します。
上記のスクリプトでは main_sc_log_color_code_rect 関数 (6 行目) になります。
プラグインの登録場所の項目 (22 行目) では menu=”<Image>/メニューフォルダ名” の形式で設定します。
このメニューフォルダ名の下に、メニューに表示するプラグイン名の項目 (17 行目) で設定した名前が、メニューアイテムとして表示されます。
メニュー名はメインウィンドウのメニューバーに追加されます。また、メニュー名は / で区切ることでメニューを階層化できます。
GIMP メニューからの自作プラグインの実行
自作の Python スクリプトをプラグインフォルダに保存したあと、 GIMP を起動します。
問題が無ければ、メニューが追加されています。
画像を開いていない状態では、メニューアイテムが非活性かもしれません。
それは、register 関数のプラグインの登録場所の項目で、メニューのパスの前に <Image> と加えたことで、画像を開いた状態でないと実行できないプラグインになったためです。
参考:作成した Python-Fu スクリプトを GIMP のメニューに登録する方法 | ランディネットワーク
メニュー「ファイル」→「新しい画像」などで画像を用意して有効になった自作プラグインのメニューを選択しましょう。
register で指定した関数が呼び出され、pdb.gimp_message プロシージャが実行され、 GIMP ウィンドウ内のエラーコンソールダイアログにログ出力が行われました。
まとめ
今回は GIMP の画像編集をプログラムで行う機能の一つ Python-Fu のスクリプトを作成し、それをプラグインフォルダに置くことで、 GIMP のメニューから自作プラグイン (.py) を呼び出し実行することが出来ました。
プラグインフォルダは、GIMP の設定で追加・削除できることや、 GIMP を再起動しないと有効化しないこともわかりました。
参照サイト Thank You!
- GIMP – GNU Image Manipulation Program
- Welcome to Python.org
- GIMPのPython-Fuでオレオレフィルタを書くためのあれこれ – Qiita
- 作成した Python-Fu スクリプトを GIMP のメニューに登録する方法 | ランディネットワーク
- Notes on GIMP Scripting
記事一覧 → Compota-Soft-Press
コメント