BLOG

作成した Python-Fu スクリプトを GIMP のメニューに登録する方法

Created at:
Category: GIMP

前回のブログ記事で作成した選択範囲のスクリーンショットを取得して表示するスクリプトは、わざわざ GIMP の Python コンソールを起動させて実行させなければいけません。

せっかく作業を自動化できたのに、スクリプトの実行に手間がかかってしまっては意味がありません。

そこで、今回は瞬時にスクリプトを実行できるように GIMP に登録する手順を紹介します。

GIMP のメインメニューに登録して、ショートカットキーで実行できるようにします。

コード

GIMP にスクリプトを登録するときに使うのは register() 関数です。

引数でプラグインの各種情報を設定します。

コードは次のようになります。

register() 関数の使い方はAutomatic Creation of XCF from JPGを参考にしました。

#!/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()

スクリプトを登録できるかを確認するためのコードなので、 main 関数の処理は適当です。

register() 関数の引数について

  • 8番目の引数(画像タイプ) : GIMP上で画像ファイルを開いていない状態でスクリプトを実行したいので、設定しません。( "" のままにしておく)
  • 最後の引数(プラグインの登録場所) : メインメニューに登録します。そうすることで画像に依存しないスクリプトになり、画像を開かなくてもスクリプトの実行ができます。

※はじめの頃は、フィルタ内の Python-Fu メニューに登録していました。 (プラグイン登録場所を menu="<Image>/Filters/Languages/Python-Fu/" に設定) これだと画像依存のスクリプトになり、画像ファイルを開いた状態でないとスクリプトの実行できませんでした。

作成したスクリプトの登録方法

GIMP メニューの 編集 ー> 設定 ー> フォルダ ー>プラグインでプラグイン用フォルダの設定ができます。

作成した Python ファイルをここに表示されているフォルダに保存します。

※新たにプラグイン用のフォルダを作成して設定することもできます。

その後、GIMPを再起動すると作成したスクリプトがメインメニューに表示されているはずです。

※スクリプトが表示されないときは、保存した .py ファイルの実行権限を確認してください。

ショートカットキーの割り当て

メニューへの登録が終わったので、次は瞬時に実行できるようにショートカットキーを割り当てます。

GIMP メニューの編集 ー> キーボードショートカットから設定します。

  1. 検索ウィンドウに作成したプラグイン名を入力して検索する。
  2. プラグインを選択し、割り当てるショートカットキーを押す。
  3. 保存してキーボードショートカット設定を閉じる。

まとめ

以上の設定で、作成した Python-Fu スクリプトを GIMP に登録し、キーボードショートカットで瞬時に実行することができるようになりました。

参考文献

この記事は以下のサイトを参考にしています。