この過去ログの記事一覧(このページのみ)です。

GimpでC言語のプラグインを書いてみた

前の記事で画素ごとに計算するPythonスクリプト(ノイズ除去の円版)が遅くて使い物にならなかったことを書いた。それじゃあC言語で書いたらどれくらい早くなるかをやってみたくなった。以下、奮闘の記録。

  1. CygwinでGIMPを作成。サンプルプラグインを作れたがメニューに出てこない。試してないがCygwin Xを動かさないといけなかったのかもしれない。そうだったとしても使えない。失敗。
  2. GIMPがMSYSで作成されているという情報を得た。LinuxをインストールしてクロスコンパイルもしくはLinuxだけで作ることも考えたが、MSYS2でGIMPを作成しようと思った。2日ほどやってみたが難しすぎて失敗。確か依存パッケージの作成で嫌になってGIMPにまで行かなかったはず。このページ(ttp://wiki.gimp.org/wiki/Hacking:Building/Windows)を見ながらやった。
  3. MSYSをアンインストールして諦めていたが、同じく難しすぎるって書いてるページ(ttp://sourceforge.net/p/mingw-w64/mailman/message/33194301/)にある別のやり方をやってみようと思った。ようやく成功。

依存パッケージをビルドしないといけないと思っていたが、最後のやり方はどこかから依存パッケージを取ってきてくれてGIMPのビルドだけで済んだ。このやり方でもDLLのビルドではまったが、エラーを出してるDLLの宣言をexternに変え、Makefileのinstall-libtool-import-libをすべてコメントに変える暴挙で乗り切った。PKGBUILDに--disable-sharedを追加したが役に立たなかったっぽい。このやり方をしたせいかC言語のプラグインのファイルサイズが少し大きくなってしまった。Windows版のC言語のプラグインを公開してる人のファイルを見てみたら、Visual Studioのファイルが置いてあったのでVisual Studioで作った方がファイルサイズが小さくできるようだ。

makepkg-mingw -eRとするとソースの展開をやめてくれるので少し楽になる。PKGBUILDのpackage関数に書いてあるが、make DESTDIR=…/pkg/… installをやってるようだ。export MAKEFLAGS=-j4とすると4倍速になる。makepkg-mingwがインストールパッケージを作られてpacman -Uでインストールできるので、再インストールするときに楽をできる。これで作ったインストールパッケージを公開してる人がいても良さそうだが。--disable-sharedの効果かもしれないが、msys64のフォルダ名をリネームしてもC言語のプラグインが動いたので、他の環境でも動作するかもしれない。

makepkg-mingwを途中から実行したい等の流れについて後で書いた記事が役立つと思う。

 

MSYS2のDLLの不思議

ttp://www.mingw.org/wiki/What_is_a_DLL_and_How_Do_I_Create_or_Use_One にMSYS2でのDLLの作り方が書いてある。-sharedとかを付けてやるといいらしい。__declspec(dllexport) intをnmで見たら.oの時はCだったのがdllにするとBに変わる。__declspec(dllimport) aをnmで見たら、U __imp_aになって前に__impが付いて、変数名が変わってしまうのがうまくいかなかった原因だと思った。

 

C言語のプラグイン

PythonスクリプトをC言語で書きなおすだけだが大変だった。ttp://developer.gimp.org/writing-a-plug-in/1/index.htmlのサンプルプログラムを少し手直しするだけだが、いくつかハマッた。まず画素を一行だけ書き換えて更新(rgn_set_row)しても上手くいかなくて、画素の全行を設定しないといけない仕様だった。スクリプトなら不要なのに、パラメーターを渡す用のGUIウィンドウを自作しないといけなかった。GTKのコードを持ってきたらgimptoolがエラーを吐くようになり、gimpui-2.0.pcに-lgmodule-2.0を追加して乗り切った。前回呼び出した時の値を保存しておいて取り出すのと、Ctrl-Fで呼び出した際にダイアログを出さないのも自作しないといけなかった。肝心の処理のところは、変数名をPythonスクリプトと同じにしたら置き換えするだけで済み、意外に楽だった。Pythonスクリプトを作らずに作ってたらすごく大変だったと思う。

Pythonスクリプト(ノイズ除去の円版)のC言語版を作ったのだが、ほぼ同じ動作をするGIMPのソースの方が遥かに参考になるので、作ったC言語のプラグインは公開しない。濃度はNTSC系加重平均法を使って計算したが、GIMPのは少しだけ違ってた。ttp://ja.wikipedia.org/wiki/YUVでいうと、GIMPが使ってるのがITU-R BT.709のYで、こっちが使ったのがYUVのY。掛けてる数値が少しだけ異なるのは異なる団体が決めたからかな。C言語版はPythonスクリプト版の10倍ほど速くなったが、GIMP版はさらに10倍速かった。GIMPのソースを見ても最適化されてて何やってるかほとんど読めないが、たぶん座標が右か下にずれたときに半径内の範囲で重なってる部分の再計算をやめるとか、濃度値の小数点を切り捨てて0から255の整数にして、濃度値毎の個数を数えていて中央値を取る時にソートしなくていいようにしている所で差がついた。最初見た時に何故乱数で画素を取ってるのって思った。

上のページに画素毎にget_pixelする遅い版のC言語のサンプロルプルグラムがあったが、使い物にならないくらい遅かった。C言語で書いても、GIMPの重い関数を何度も呼んでいたら速くならない。Pythonスクリプトを書くときにも重い関数を呼ぶ回数を減らすことを心がけたい。

 

最後に

makepkg-mingwで作ったパッケージを公開してる人がいても良さそうだと書いたが、探したらあった。pacman -Sw mingw-w64-x86_64-gimpでパッケージをダウンロードして/var/cache/pacman/pkgにあるのを展開したら、中にgimp.hやgimptool.exeが入っていた。最初見た時はなかったはずなのに、途中でミラーサーバーが変わったのか、あったのに開発用に使えないと思ってスルーしてしまったか(謎)

posted at 2015年05月15日 21:13 | Comment(0) | パソコン | このブログの読者になる | 更新情報をチェックする

GimpでPythonスクリプトを書いてみた

gimpとは

非常に高機能なフリーの画像編集ソフト。初心者には敷居が高いが、使い方を学んでいるといろんな使い方が見えてきて楽しくなってくる。画像を切り抜いたり、切り抜いた画像の色を変えて元画像に戻してみたり、GIFアニメーションを作ってみたり、ロゴを作ってみたり、各種エフェクトをかけて画像加工してみたり、画像解析に使ってみたり、画像の一部をなかったかのように修正をかけたり、ノイズ除去してきれいにしてみたり・・・。

そのうちにスクリプトがあることが分かり、スクリプトに挑戦してみた。

gimpには2つのスクリプトがあり、Schemeを使ったScript-FuとPythonを使ったPython-Fuがある。Script-Fuの方が古くからあるせいかScript-Fuの方が公開されているスクリプトが多い。しかし、Python-Fuの方がプログラムを書きやすいのでPython-Fuでスクリプトを書くことにした。

“gimp Python”で検索したら上位に来るIBM developerWorks(“Python を使用して GIMP 用のプラグインを作成する”)とIT pro(“Part3 フリーの画像ソフトGIMPをPythonで自在に操る”)の記事が初心者に分かりやすい。6年前に書かれたIT proの記事にはPython実行環境のインストールが必要と書いてあるが、最新のgimipには組み込まれておりインストールは必要なかった。

 

Pythonのスクリプトを書くコツ

(その1) フィルター>Python-fu>Consoleでコンソールを出し

img=gimp.image_list()[0];lay=img.active_layer

をコンソールに貼り付ける。最初、コンソールからimgとlayを見れなくて戸惑うと思うが、これを貼り付けておけばメニューから実行しなくてもコピペでコンソールに貼り付けて実行できるようにになる。

コンソールから画像を扱えるようになるこの技を知っておけば上達しやすいと思う。なぜなら、コンソールに対話的にプログラムを打ち込むことでスクリプトの使い方が学べるからだ。

例えば

def a(x,y):
	pdb.gimp_paintbrush_default(lay,4,(0,0,x,y))

の関数定義をコンソールに貼り付けた後で

a(100,100)

を貼り付けて関数を実行すると、座標(0,0)から(100,100)まで線を引いてくれる。

(その2) ヘルプ>プロシージャーブラウザで関数を探す。暗室ツールの関数がdodgeburnって探すのに苦労したがどうにかして頑張るしかない。dodgeburnって何だよ(汗)。スクリプトを作る際に関数が見つからなくて困ったものもあったが、大抵の関数はそろっており、メニューから実行できる一連のタスクのほとんどをスクリプトで自動化できる。高度な人工知能をプログラミングしないといけないので、途中で高度な人間の判断が入ってるタスクは自動化出来ない。できるとはいえ、何をスクリプトで書くか、何をこの記事の題材に選ぶか迷った。各レイヤーを別々の画像ファイルに保存するスクリプトは他の人が作ってたし、かといって込み入ってるのは食指が動かない。localeフォルダの下の方にある拡張子moのファイルをPoeditに入ってるコマンドラインから逆アセンブルして拡張子poのテキストファイルにすれば対訳が検索できるようになるが、そこまでしなくていいだろう。それから、プロシージャーブラウザで出てくるrun_modeは使わないのでパラメーターから抜いておく。drawableはレイヤーのことだ。

と書きながら調べてると、GIMP Python Documentationがとても有能なことに気づいた。このページを上位にヒットさせてくる検索エンジンはさすがだ。プロシージャーブラウザで出てくる関数は「pdb.」から呼び出せるが、gimp.image_list()の「gimp.」はどこから呼び出せるのだろうか。GIMP Python Documentationに「gimp.」から呼び出せる関数一覧が載っている。drawableはレイヤーのことだと書いたが(まあこう思っていて困ることはない)、GIMP Python Documentationにレイヤーとチャンネルの両方がdrawableだと書いてあった。あ、そうだったのか。pdbは関数をいっぱい登録したデータベースっていうことでProcedural  Databaseの意味らしい。

プロシージャーブラウザを眺めてたらこの関数何だってのに出会う時がある。plug-in-randomize-pick「Randomly interchange some pixels with neighbors(ランダムに隣接ピクセルを交換する)」って何だ。動かしてみたらステータスバーにつまむって出て、「フィルター>ノイズ>つまむ」のことだと分かった。ランダムな隣接ピクセルの交換が何故つまむになるのかと突っ込みたくなった。

(追記)がーん。「ヘルプ>プロシージャーブラウザで関数を探す」より良い方法が見つかってしまった。Python ConsoleのBrowseボタンでプロシージャーブラウザが開く。Applyってボタンが優秀で、コンソール画面に関数のマイナスをアンダーバーに変換して引数と返り値も付けて貼ってくれる。なんて便利な。

 

コンソールで対話的に操作して、複数のレイヤーをタイル状に並べてみる

同じサイズのレイヤー4枚をタイル状に並べてみたい。コンソールにコマンド?を打ち込むだけでできたので紹介しよう。まずフィルター>Python-fu>Consoleでコンソールを呼び出す。

img=gimp.image_list()[0] 
lay=img.active_layer
これは毎回のお約束。
w=lay.width 
h=lay.height
簡単にwとhで画像の横幅と高さを呼び出せるように名前をつけておく。こうやっておくと対話的に作業するのに便利になる小技だ。
img.resize(w,h*4,0,0)
先にキャンパスサイズを先に変更しておく。タイルを縦に4枚並べたいので高さを4倍にする。img.resizeの仕様確認はGIMP Python Documentationのページを見るしかないと思う。
for l in img.layers:
	p=pdb.gimp_image_get_layer_position(img,l)
	print h,p,h*p
	l.translate(0,h*p)
forループで各ループの位置(pに0から3が返ってくる)から移動距離を計算しlayer.translateでレイヤーを移動させる。コンソールなのでprintデバッグができる。

この後、img.flatten()で可視レイヤーの統合ができる。

これを行う前にスクリプトがないか探してみたが、複数のレイヤーを扱うスクリプトってのがなかなか見つからなかった。

(追記)がーん。なぜスクリプトがないか分かった。画像の大きさにグリッドを設定して、グリッドにスナップにすれば、レイヤーの移動でぴったりと移動させられる。スクリプト書いてやりたいと思ったことは書かなくてもできるようになってるってのがほとんどで悲しい。ピクセル毎に(R,G,B)を(255-R,255-G,255-B)してみようと思ったら階調の反転でできるし、R→G・G→B・B→Rに変えるスクリプトを書いてみようと思ったら、チャンネル分解からチャンネル合成でできる。苦し紛れに(R,G,B)を(R,R+G,R+G+B)にするスクリプトを書いてみようと思ったらチャンネルミキサーでできる。このような色変換しても何の用途にもならないが、考えることは同じってことか。ついには(R,G,B)にルートを取るスクリプトを書いたが、何に使えるのか分からなくて悲しくなってきた。

 

コンソールで対話的に操作して、複数のレイヤーを同時に指定ピクセルだけ移動させる

コンソールを呼び出してから

img=gimp.image_list()[0] 
lay=img.active_layer 
お約束。
print lay.offsets,lay.width,lay.height
移動元と移動先でレイヤーの位置情報(座標、横幅、高さ)をprint文で表示させ、座標の差分を計算。Undoで元に戻してから、動かしたい複数のレイヤーを鎖マークで結合指定してから
lay.translate(-5, 100)
とやると複数のレイヤーを同時に(-5, 100)だけ動かせた。

(追記)レイヤー>変形>オフセットでも指定ピクセルの移動ができる。しかし、そのやり方では結合レイヤーの同時移動ができない。

 

色のHTML表記をコピーしないで「色を透明度に」を楽に行う

スポイトツールで色のHTML表記をコピーしてから「色>色を透明度に」を実行して色を貼り付けるのが手間だ。

コンソールを呼び出してからお約束を貼り付けておき

img=gimp.image_list()[0] 
lay=img.active_layer

スポイトツールのショートカットキーOで色を前景色に設定してから

pdb.plug_in_colortoalpha(img, lay, pdb.gimp_context_get_foreground())
を実行すればいい。コンソール画面では矢印の上下でコマンド?履歴を辿れるので何度も「色を透明度に」を実行する場合に楽ができる。

 

コンソールからグラデーションを作成

コンソールに

def make_grad(name, color_list): 
    import gimpcolor 
    num=len(color_list) 
    color_list = list(color_list) 
    for i in range(num): 
        if not isinstance(color_list[i], tuple):  
            color_list[i]=gimpcolor.rgb_parse_hex(color_list[i])  
    n, gl = pdb.gimp_gradients_get_list('^' + name +'$') 
    if n==1: pdb.gimp_gradient_delete(name) 
    pdb.gimp_gradient_new(name) 
    pdb.gimp_context_set_gradient(name) 
    pdb.gimp_gradient_segment_range_split_uniform(name, 0, 0, num) 
    for i in range(num): 
        pdb.gimp_gradient_segment_set_left_color(name, i, color_list[i], 100) 
        pdb.gimp_gradient_segment_set_right_color(name, i, color_list[i], 100)

を貼り付けてから関数make_gradを呼び出す。

make_grad('イタリア国旗', ((0,255,0), (255,255,255), 'ff0000'))

解説。関数の一番目にグラデーション名を渡す。2番目に色リストを渡す。色は(R, G, B)でも16進数でも受け付ける。色リストの長さが3なので3等分してセグメントごとに左端の色と右端の色を設定している。ここでは各セグメントの左端と右端の色を同じに設定しているのでグラデーションがかからないが、別の色に設定すればグラデーションがかかる。ここでは色リストに(緑、白、赤)を渡して「イタリア国旗」という名前のグラデーションを作成している。

 

ぼかしを10回かける

ガウスぼかしばかり使われているが、目立たず「ぼかし」というのがある。ヘルプによると、このフィルターの欠点は大きな画像ほど[一度や二度の実行では]その効果がなかなか目立って現れてこない、とあったのでコンソールからぼかしを10回かけてみた。ぼかしで近隣の画素の値から平均値を算出しているなら半径があって然るべきなのに、パラメーターに半径がないことが不思議だ。マウスでは100回ぼかしをかけられないが、コンソールから行うと100回かけることもできる。

def blur(num):
	img=gimp.image_list()[0]
	lay=img.active_layer
	for i in range(num):
		pdb.plug_in_blur(img, lay)

blur(10)

 

すべてのレイヤーを可視あるいは不可視にするスクリプト

スクリプト名: alllayersInvisible.py、alllayersVisible.py

メニューの場所: レイヤー>全レイヤーを不可視にする、レイヤー>全レイヤーを可視にする

変数img.layersに各レイヤーが入ってるので、各レイヤーにpdb.gimp_layer_set_visibleを呼び出すだけの簡単なお仕事。

 

ディフュージョンフィルタをかけるスクリプト

スクリプト名: diffustion.py

メニューの場所: フィルター>ぼかし>ディフュージョン

ttp://www.nicovideo.jp/watch/sm23454871 のニコニコ動画で作り方の解説があったので作ってみた。動画作成者の新たな提案として、ガウンシアンぼかし→除算→乗算とガウンシアンぼかし→除算→除算を作ってディフュージョン効果を出すというもの。一般的なPixiv版のやり方も動画で説明があったので、Typeで選択できるようにした。まあ、結果は微妙に違うが、違いを言葉で言い表すのは難しい。光があたってぼかしてるが、元の線はぼかされてないってのがディフュージョンかな?

 

グロー効果をかけるスクリプト

スクリプト名: gloweffect.py

メニューの場所: フィルター>ぼかし>グロー効果

gimpの使い方を書いたページを見てるときに見つけた。ttp://torigont.blog58.fc2.com/blog-entry-114.html に載ってるやり方は Pixivに載ってるのと同じ。gimpのglowは選択範囲を広げるって意味だが、日本語のグロー効果はグロー電球のように光が灯るって意味だろう。「色>レベル」で暗い色を真っ黒にしてぼかしをかけ、スクリーンモードにして全体的に明るくし、明るい色だけをぼやかすのがグロー効果かな?結果はディフュージョンと微妙に違うんだが、何が違うのかよく分からない。同じページにレイヤーモードをスクリーンではなく焼き込みにするおまけが載ってたので、Typeで選択できるようにした。

 

糸で縁取りしたフェルト地のロゴを作るスクリプト

スクリプト名: feltlogo.py

メニューの場所: ファイル>画像の生成>ロゴ>フェルト字ロゴ(ゼロから作る場合)と、フィルター>ロゴ効果>フェルト字ロゴ(元になる文字画像がある場合)の2つ

これは力作ですよ。作るのに苦労した。スクリプトの作成だけでなく、ネタ本から作成方法を学ぶことにも。以前の記事でも紹介したが、無料でつくるGIMPスマートロゴという本で一番お気に入りのロゴをスクリプト化してみた。この本を読んでなかったらGimpに触れてなかったかもしれない。でも、本のステマじゃないです。アマゾンのレビューに殆ど理解できなかったと星1つの最低評価があるのは本当で、この本は難しすぎて読めない。何も知らないところからGimpのスクリプトを書くくらいに暗号解読の技量が必要だったかと。

忘れないうちに、長々と苦労した点などを書きつらねておこう。テキストレイヤーを初めに作って、そのサイズにキャンバスサイズを合わせる技はscript-fuのロゴスクリプトを解読して拝借してきた。カスタム破線を書く関数がなくて一度挫折したのだが、選択範囲をパスに変換し、パスの始点からの指定距離における座標を返す関数を使った荒業で乗り切った。実は破線は全部直線で曲線がないのだ。新しいパスをベジエ曲線で作れば曲線で描けそうだが、ベジエ曲線の部分曲線を計算するのが難しいので諦めた。その前に、ブラシを新たに作成して、ブラシの間隔を設定し、選択範囲の境界線を描画すると点線になる方法を試したのだが、点線がフェルト地っぽくならなかった。「ファイル>画像の生成」と「フィルター>ロゴ効果」の2箇所から呼べるようにするのもscript-fuのロゴスクリプトから拝借してきた。gimpのロゴ作成の作法に合わせたともいう。ロゴの作成手順は、テキストを拡大してパターン(Ice)で塗って、着色で色を変え、範囲を縮小したところに破線を描く。白黒の二色で描いた破線をぼかしてバンプマップにかけると、ロゴの縁取り部分がへっこんだ感じになる。縁取りの前面部分は、破線部分をパターン(CorkBord)で塗って、ベベルの装飾で立体的に見せる。雲のソリッドノイズを全体にまぶしてレイヤーモードを差の絶対値にして質感を出し、ドロップシャドウで影を付け、所々を暗室ツールで消すと完成だ。所々といっても色が濃いところ?に暗室ツールをかけるのは人間の判断が入っていてプログラムに落とせない。色が濃いところを探すのをプログラムにするのも難しい。スクリーンレイヤーを重ねて全体的に明るくする手も考えたが、元ネタと作成方法が違ってしまう。指定回数分だけサイコロを振って決めた座標に暗室ツールをかけることにした。暗室回数のパラメーターを0にして、大きさ500くらいの大きなブラシで見ながら濃い箇所に暗室ツールをかけることをおすすめする。暗室ツールはツールボックスの最後尾にあるShift+Dがショートカットキーになっているツールのことだ。

試作ロゴと利用したパラメーターを載せておく。どの文字も暗室回数を0にして見ながら修正をかけ、各文字の大きさを揃えてある。

文字

フォント

Arial Heavy

MSPgothic

NikumaruFont UltraBold

LightNovelPop Bold

フォントの大きさ

831

831

831

831

回転角

-7

7.8

-5.2

2.2

拡大距離

20

10

0

0

境界をぼかす半径

56

28

0

28

縁取りまでの距離

25

15

20

25

色相

275

96

211

300

彩度

76

100

50

62

輝度

-13

-14

-13

-1

暗室回数

0

0

0

0

 
※ 後で縁取の横幅、間隔1、間隔2をパラメーターに追加したので、上のサンプルロゴはデフォルト値で作成。
 

複数レイヤーに対応して、選択範囲を移動させるスクリプト

スクリプト名: move_selection_layers.py

メニューの場所: レイヤー>選択範囲を結合レイヤーで移動

選択範囲を複数レイヤーで移動させることができなさそうだったので作ってみた。鎖マークで結合していしたレイヤーもしくはアクティブレイヤーにおいて、選択範囲をフロート化して指定距離だけ移動して元画像に戻す。

 

画像間で可視レイヤーをまとめてコピー

スクリプト名: copy_layers.py

メニューの場所: レイヤー>画像間で可視レイヤーをまとめてコピー

Undoしたら編集後の画像がなくなるので退避しておきたいと思って作った。新画像を作成をYESにすれば新画像に可視レイヤーをコピーする。作った後で複製(Ctrl-D)を使えばいいことが分かったが、レイヤーが多い2つの画像を併合させたい時に役立つかもしれないと思った。

 

可視レイヤーをタイル状に並べる

スクリプト名: tile_layers.py

メニューの場所: レイヤー>可視レイヤーをタイル状に並べる

スナップすればいいんだけど手で並べるの面倒くさいと思って勢いで作った。これ動かしてからCtrl-Shift-Jでウィンドウ内に全体を表示するのが使い方。画面の大きさを変更をYesにすれば画像の横幅で指定した大きさでレイヤー画像を拡大縮小。タイトルを追加をYesにすれば文字を入力できるテキストレイヤーを追加。テキストレイヤーをすべて消去して再作成をYesにすれば再作成が捗る。

 

レイヤーに分割

スクリプト名: divideLayer.py

メニューの場所: レイヤー>レイヤーに分割

タイル状に並べて1つの画像に統合した後で元に戻すをしないでタイル状に分割できるようにした。簡単にいうと、指定した分割数にレイヤーに分けてくれるスクリプト。分割数が0なら長さを使い、分割数が0でなければ指定した長さを無視する。

 

ノイズ除去の円版

スクリプト名: medianFilter.py

メニューの場所: フィルター>強調>メディアンフィルター(ノイズ除去)の円版

画素ごとに計算するスクリプトが作ってみたかったので、作ってみた。get_pixel_rgnを触っているのでUndoが効かないし、時間を測ってみたらGimpのノイズ除去より概算で100倍以上遅い。したがって役に立たないが、画素ごとに計算するスクリプトを書いたらとても遅いということを紹介するためだけの章。比較画像を見たら、円版にしてもほとんど違いが分からない?(笑)比較画像は「可視レイヤーをタイル状に並べる」スクリプトの紹介にもなってます。xrange使えとかappend=lst.append; append()を使えとかあってやってみたが、どうしようもなく遅い。

 

FAQ

1. PF_SPINNERやPF_COLORといったregisterで使えるUIパラメーターの一覧が知りたい。

ttp://gimpbook.com/scripting/のpyui.pyが参考になる。

 

ここで紹介したスクリプトの詰め合わせ

ダウンロード: amekujira_gimp_scripts.zip

 

スクリプトの使い方

「C:\Users\<ユーザー名>\.gimp-2.8\plug-ins」にPythonスクリプトを置いて再起動するだけ。再起動しないで再読み込みする方法はなさそうだ。Gimpの「編集>設定>フォルダー>プラグイン」に書かれているフォルダーに置けば良い。zipファイルを置くんじゃなくて解凍してできる拡張子pyのファイルを置くよーに。

スクリプト内のregisterの箇所を見て欲しい。register("<Image or Toolbox>/Layer/全レイヤーを不可視にする")と書かれている場合、メニューのレイヤーの下に「全レイヤーを不可視にする」というメニューが追加され、そこからスクリプトを実行できるようになる。

posted at 2015年05月03日 00:24 | Comment(0) | パソコン | このブログの読者になる | 更新情報をチェックする