GIMPのScript-Fuについての基本的な部分の雑感

最近GIMPのScript-Fuでスクリプト書いたりしてるんですが、なかなか理解するのに苦労してるのでちょっとここいらで一端まとめとして雑感を記しておこうと思います。

まず、なんでGIMPのScript-Fuを使おうと思ったのかと言うと、とある一連の処理を自動化してしまおうとしたからになります。 ただ画像処理の自動化ならImageMagickのコマンドをシェルスクリプトでこねくり回した方が楽ちん。まぁこれはLinux環境でシェルスクリプトを手軽に使えるからってのもありますが。

今回はGIMP特有もしくは得意な機能を絡めた自動化をしたかったので、Script-Fuを選択しました。ちなみにGIMPにはScript-Fuの他にPython-Fuというのでもスクリプト処理を組むことが出来ます。ただこのPython-Fuで使われるPythonはバージョンが2.7なので、そこをどう見るかはちょっと考えたいところ(将来的にはPython3になると思いますが)。

さてScript-Fuですが、こちらにはTinySchemeというプログラミング言語が用いられています(TinyScheme - Wikipedia)。
TinySchemeとはなんぞや?というと、Schemeというプログラミング言語の軽量版(簡易版?)に当たるようです。ではそのScheme(Scheme - Wikipedia)とはなんぞや?となると、これはLisp(LISP - Wikipedia)という言語の方言だそうな。プログラミング言語で方言と言われてもよく分かりませんが(いや、Wikipediaにそう書いてあったので…)、まぁ言語自体は同じようなもので処理を書く時の書式がちょっと違うとかそんなものでしょう、たぶん。

LispといえばテキストエディタのEmacsでもEmacs Lisp(Emacs Lisp - Wikipedia)というのが使われています。個人的にはこれまでEmacsを使ってきたのですが、あまりEmacs Lispに関しては触れずに過ごしてきました。というわけで(どういうわけ?)、Script-Fuを学ぶことはSchemeを学ぶこと、すなわち必然的にLispにも詳しくなれてEmacsを使う幅も広がっていくに違いない、という思惑も絡んで今回はScript-Fuを使うことにしました。

さて、これで何を使って処理を組むのかは決まったのですが、探してみてもなかなかScript-Fuの初心者向けの情報が見つかりません…。Script-Fuで組まれた処理を紹介しているWebページは結構あるのですが、それらはすでに言語自体は使えるのが前提で書かれています。まったく知らないまま読んでもチンプンカンプン。
またいろんなWebサイトに細切れになっている解説を読んでも、なかなか全体像までは辿りつけません。なので、こういうときは大抵は公式のドキュメントに当たるのが手っ取り早いです。
ということで、GIMPの公式サイトのドキュメントは以下の通り。
GIMP - Documentation
GNU Image Manipulation Program
(リンク先は英語のドキュメントですが、日本語のドキュメントもあります)
ただドキュメントとしてはかなり膨大な量となっていてなかなか目的の情報を見つけるのが大変ですが、スクリプトの情報は以下のChapter 13にあります。
Chapter 13. Scripting
さて、実際にここの「3.A Script-Fu Tutorial」を読みながら進めていったのですが、実際にスクリプトを動かそうとしても全然うまくいかず…。一応基本的な言語自体の処理までは出来るのですが、GIMPの関数のパラメーターを操作するという段階でどうしてもつまずいてしまいました。プログラミング、ムズカシイネー。

この時点で結構あきらめの気持ちに入ってしまったのですが、もうちょっと参考になりそうな情報を探してみました。で、なんのことはなし。公式のドキュメントのページにまだ追加の情報がありました。始めにあるドキュメントのページ
GIMP - Documentation
この下の方に「GIMP Documentation for Developers and Script Authors」という項目があり、その中にスクリプト作成についてのページがありました。
Script-Fu and plug-ins for The GIMP
こちらのページではより詳しく実際のスクリプトの作り方が解説されていて、しばらくあれやこれや試行錯誤していたらなんとかちゃんと実行出来るスクリプトを作れるようになりました。やったね。

あとはScheme言語の文法を調べる時の情報として、以下のサイトのドキュメントが参考になりました。
MIT/GNU Scheme - GNU Project - Free Software Foundation

とりあえず現在は以下のようなものを作っています。
(このダイアログを表示させるまで結構長かった…)

以下の動画はスクリプト処理でフラクタル画像を連続生成して作成しました。
(生成した連続画像はffmpegで動画化しています)

とりあえず1つ出来るようになったので、これで大まかな要領はつかめたかなと思います。とはいっても、まだScript-Fuの基礎の段階なのでまだまだこれからですねー。さてさて、もうちょっとがんばっていきますか。


AmazonのGIMP関連商品



コメント

スポンサーリンク


このブログの人気の投稿

Ubuntu Softwareが起動しないのでいろいろと調べてみる(Ubuntu 20.04.1 LTS)

gnuplotでプロットなどの色をcolornameの指定で変更する

gnuplot : グラフにグリッド線を描く方法(set grid)

gnuplot : プロット画像のサイズ指定について(set sizeとの違い)

円の直径の2乗から円の面積を求める?