TypeError: wrong number of parameters

X11 Mouse Cursor plug-in for GIMP(gimp-xmc-plugin)の「file-xmc-save」関数は15の引数を持つ。以下に解説すると

run-mode        INT32   他のplug-inと同じ
image           IMAGE        〃
drawable        DRAWABLE     〃
filename        STRING       〃
raw-filename    STRING       〃

x-hot           INT32   hotspotの座標。実現出来ない座標なら元の座標を保持。
y-hot           INT32   したがって意図的に(-1, -1)などとして元の座標を保持することが出来る

crop            INT32   保存時にAuto-crop(画像の隅の不要な透過部分を切り落とす)するかどうか
size            INT32   (nominal)sizeの値
size-replace    INT32   既にsizeが指定されているフレームも上の値で置き換えるか
delay           INT32   delayの値(5未満なら50に置き換えられる)
delay-replace   INT32   既にdelayが指定されているフレームも上の値で置き換えるか

copyright       STRING  著作権情報、     NULLで元の文字列を保持
license         STRING  ライセンス情報      〃
other           STRING  その他のコメント    〃

となる。(真偽値は0でFALSE、1でTRUE)
以下にGIMP-Pythonで「file-xmc-save」関数を呼び出して画像をXMCで保存するスクリプトの例を示す。
xmc_save.py:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from gimpfu import *

def xmc_save_py(img, drw):
  pdb.file_xmc_save(img, drw, "hoge.xmc", "hoge.xmc",
                    -1, -1, #元のhotspotの座標を保持
                    1,      #Auto-cropする
                    40,     #(nominal)size
                    1,      #すべてのフレームのsizeを40にする
                    0,      #delay(5未満なので50になる)
                    0,      #delayの決まっていないフレームのみ50にする
                    None,   #著作権情報は変更しない
                    "",     #ライセンスは空文字列にする
                    u"実験")#コメントは「実験」に変更

register(
  "python-fu-xmc-save",
  "summary",
  "description",
  "name",
  "copyright",
  "date",
  "<Image>/File/Test/xmc_save_py",
  "RGBA",
  [],
  [],
  xmc_save_py)

main()

注意点

  • pdb.file_xmc_save」でfile_xmc_save関数を呼び出す。
  • 第一引数の「run_mode」は書いてはいけない。もし書くと「TypeError: wrong number of parameters」とエラーが表示される。
  • registerの第9引数は登録するxmc_save_pyの引数を列挙するが、先日の記事で書いたようにrun-mode、image、drawableは書いてはいけないので、無しになる。
  • pythonではNULLは「None」になる。

実際に使うにはxmc_save.pyに実行パーミッションを着けて「~/.gimp-2.4/plug-ins」に放り込み、GIMPを立ち上げてファイルメニューからTest→xmc_save_pyとたどる。