2014/07/14(月) [n年前の日記]
#2 [prog][cg_tools] gimp-shell.el等が気になる
Script-fu を書くなら、gimp-shell.el や script-fu-shell.rb を使えたほうがいいのかなと思えてきたり。ただ、導入の仕方が…。Windows上で動くかどうかも不明だし。
_gimp-shell.el / gimp-mode を使ってみた | anobota
_Emacs で Script-Fu を書いて実行させる / script-fu-shell.rb | anobota
_pft/gimpmode - GitHub
_gimp-shell.el / gimp-mode を使ってみた | anobota
_Emacs で Script-Fu を書いて実行させる / script-fu-shell.rb | anobota
_pft/gimpmode - GitHub
◎ script-fu-shell.rb を試してみた。 :
_Emacs で Script-Fu を書いて実行させる / script-fu-shell.rb | anobota
を参考にして動作確認を試みたり。
環境は、Windows7 + GIMP 2.8.10 Portable + Ruby 1.9.3 p545 mingw32版。
結果を先に書いておくと、動きそうだけど微妙に動かなかった。
試した手順をメモ。 _sonota/script-fu-shell - GitHub から一式をDL。解凍。
まず、以下のエラーメッセージが出てくる。
とりあえず192行目に、
再度試してみたけれど。
item->string は、script-fu-shell-init.scm 内で定義されてる。Script-fuサーバが返してきた値について、コンソールに出力するために文字列へと変換する処理を担当しているのだと思う。script-fu-shell-init.scm をGIMPに追加したはずなので、item->string が使えそうな気がするのだけど、反映されてないのだろう。どうやって反映させたらいいのか分からない。
136行目に、
やはり item->string を Script-fu に認識させないといかんらしい。もしくは Rubyスクリプト側で、リスト値その他を判別して文字列に変換する処理ができれば…。そんなことができるのかわからんけど。
GIMP の Script-fu のマズイ点は、動作確認がやりづらい点だと思うわけで。そこらへんをどうにかできないものかと…。
環境は、Windows7 + GIMP 2.8.10 Portable + Ruby 1.9.3 p545 mingw32版。
結果を先に書いておくと、動きそうだけど微妙に動かなかった。
試した手順をメモ。 _sonota/script-fu-shell - GitHub から一式をDL。解凍。
- script-fu-shell-init.scm を GIMP 2.8.10 Portable に追加。
- GIMPを起動
- Script-fu → Script-fu → サーバスタート
- ruby script-fu-shell.rb を実行。
- (gimp-display-new (car (gimp-image-new 640 480 0))) と打つ。
まず、以下のエラーメッセージが出てくる。
script-fu-shell.rb:190:in `run': undefined local variable or method `line' for #<ScriptFuShell:0x21128d0> (NameError) from script-fu-shell.rb:264:in `<main>'script-fu-shell.rb の 190行目に、
Readline::HISTORY.pop if dup_or_blank?(line)と記述があるが、line なんて変数は定義されてない。オリジナルソースは、作者の手元で動いていたのだろうか…。何故動いていたのだろう…。
とりあえず192行目に、
line = prepare_line(raw_line)という記述があるので、190行目を、その下に移動してみた。
再度試してみたけれど。
> (gimp-display-new (car (gimp-image-new 640 480 0))) => Error: (<unknown> : 61562155) eval: unbound variable: item->string「item->string なんて知らねえよ」と文句を言われてしまった。
item->string は、script-fu-shell-init.scm 内で定義されてる。Script-fuサーバが返してきた値について、コンソールに出力するために文字列へと変換する処理を担当しているのだと思う。script-fu-shell-init.scm をGIMPに追加したはずなので、item->string が使えそうな気がするのだけど、反映されてないのだろう。どうやって反映させたらいいのか分からない。
136行目に、
send_raw %Q{(item->string #{script.strip})}という記述があったので、試しに、
send_raw %Q{(#{script.strip})}と書き換えてみたが、一応コマンド?は送られて新規画像が作成されるものの、
> (gimp-display-new (car (gimp-image-new 640 480 0))) => Error: (<unknown> : 83411614) illegal functionと表示されてしまう。(1) というリストが返ってきてるけど、DOS窓に表示しようもなくてエラーになっているのかなと。
やはり item->string を Script-fu に認識させないといかんらしい。もしくは Rubyスクリプト側で、リスト値その他を判別して文字列に変換する処理ができれば…。そんなことができるのかわからんけど。
GIMP の Script-fu のマズイ点は、動作確認がやりづらい点だと思うわけで。そこらへんをどうにかできないものかと…。
[ ツッコむ ]
以上です。