mieki256's diary



2005/01/25(火) [n年前の日記]

#1 [cg_tools][prog] GIMPのScript-fuを勉強(?)中

WinXP Home SP2 + GIMP で勉強中。最終的にやりたいことは、連番pngを連番xcfで保存しなおすこと。

GIMP 2.2.1上では、DB Browserはどこに。プロシージャブラウザってのがそれかしら。

検索が使えなくて戸惑う :

最初、プロシージャブラウザ上で検索しようと入力欄をクリックしても、フォーカスが移らなかった。キーを打ち込んでみても反映されず。…アプリケーション切替をしていたら、そのうち件の入力欄にフォーカスが移った。どういう条件でフォーカスが移らなくなるのか、謎。でもまあ検索できてるみたいだから、いいか。

file-xcf-saveが無い :

_gimp でバッチ処理 のページを見ながら、「file-gif-save を file-xcf-save にすれば済むかな」と単純に思ったけど。プロシージャブラウザを眺めてみたら、file-xcf-save が無い。GIMPのくせにGIMP専用フォーマット xcf を扱う関数(?)が存在してないのか。むぅ。と困惑していたら gimp-xcf-save というのがあった。これかしら。

gimp-file-save ってのもあるらしい。これでもいいのかな。おそらく、拡張子で自動判別して保存してくれるのだろうと勝手な想像。

メニューに表示されない :

.scmを作成して、~/.gimp-1.2/scripts/ に放り込んでみたけど、Script-fu のメニューに表示されない。GIMP 1.x と 2.x で仕様が変わったのかしら。

_こちら で触れられていた。1.2.x の頃から違ってるらしい。
_"<Toolbox>/Xtns/Script-Fu/Logos/3D Outline..."
といった感じで書くみたい。<Toolbox> 以外にも色々ある模様。

上手くいかない :

エラーが出るなぁ。 GIMP 2.2.1 は何か違うのだろうか。GIMP 1.2.5 で動作確認することにした。

原因判明 :

(define (png2xcf inFile outFile) と書くところを、コピペしたまま (define (pbm2gif inFile outFile) と書いてたらしい。これで丸一日ハマってた自分。アホ過ぎ… (;TДT)

こんな感じかな :

png を xcf で保存するスクリプト。
(define (png2xcf inFile outFile)
  (set! img (car (gimp-file-load 0 inFile inFile)))
  (set! drawable (car (gimp-image-active-drawable img)))
  ; (gimp-display-new img)
  ; (gimp-displays-flush)
  (gimp-file-save 1 img drawable outFile outFile)
  ; (gimp-quit 0)
  )

(script-fu-register "png2xcf"
     _"<Toolbox>/Xtns/Script-Fu/Utils/png2xcf..."
     "Converts a png file to xcf"
     "mieki256"
     "mieki256"
     "2005 01 26"
     ""
     SF-VALUE "Infile"   "\"01.png\""
     SF-VALUE "Outfile"  "\"01.xcf\""
     )
このくらいは標準でありそうな気もするんだけどな…。コマンドライン指定で機能があったりしないのかしら。

_Gimp起動コマンド :

_Gimpの起動フラグとrcファイル
windows の場合、
start gimp --help
と打ち込まないと起動コマンド一覧が出てこないらしい。それと、非Windows版の -n が、Windows版は -i になってるように見える。

batch modeで上記スクリプトを指定するとエラーがでる :

GIMPのメニュー上から呼び出すとエラーは出ないけど。batch modeで使おうとして、
start gimp -i -b '(png2xcf "01.png" "01.xcf")' '(gimp-quit 0)'
と打つと、エラーが出る…。
batch command: experienced an execution error.
batch command: experienced an execution error.
batch command: experienced an execution error.
batch command: experienced an execution error.
batch command: executed successfully.
こんな感じのエラー。それに、処理が終了しない。新たに開いたDOS窓を閉じると、「gimp.exe -- アプリケーションエラー」みたいな例外ナントカが出て不正終了。タスクマネージャで見ると、script-fu.exe が残ってる。うーむ。

「"」の書き方がマズイのかと思って、
start gimp -i -b '(png2xcf "\"01.png\"" "\"01.xcf\"")' '(gimp-quit 0)'
とか、
start gimp -i -b '(png2xcf \"01.png\" \"01.xcf\")' '(gimp-quit 0)'
とか打ってみた。…エラーメッセージが変わるな。でも、エラーは出たまま。

Windows版はバッチモード自体が使えないのだろうか :

_GIMP Batch Mode のページに書いてあるとおりに打ってみてもエラーが出るし。

_ココ_ココ を見ると、Windows版では batch mode は使えない香りがしてきた。 *1 …やっぱりLinuxが必要なのかなぁ。

関係ないけど :

英語圏のMLを眺めてたら、「GIMP の batch mode が上手く動かないよ〜」→「その程度の処理ならImagemagick使えよ。このバカ」みたいな流れがパターン化してる気がしてきた。…Imagemagickがxcfの書き出しに対応していれば、自分もそっちでやるんだけどな。誰が好き好んで GIMP の batch mode なんかに手を出すもんか。つーかどうして xcf 書き出しに対応してるツールがGIMP以外に無いのだらう。むぅ。

むむ? 動いた? :

start gimp -i -b "(png2xcf \"01.png\" \"01.xcf\")" "(gimp-quit 0)"
エラーメッセージが出ないし、新しくDOS窓も開かないし、プロセスも残らない。「'」は「"」に、「"」は「\"」にすればいいのか…な? 自信ないけど。 *2

別ドライブにあるファイルを変換する場合は、
start gimp -i -b "(png2xcf \"h:\\01.png\" \"h:\\01.xcf\")" "(gimp-quit 0)"
こんな感じでイケるみたい。「\」は「\\」にする、のかな? また、 _『Script-Fu で 画像形式変換のバッチ処理』 にあるように、スクリプト中に (gimp-quit 0) を入れておけば、
start gimp -i -b "(png2xcf \"h:\\01.png\" \"h:\\01.xcf\")"
これだけでもイケる、ように見える。その代わり、GIMP のメニュー中から呼び出すと、GIMP自体が終了してしまうけど。

なんだ。Windows版でも、batch mode が使えるのだな。良かったー。

さて、あとは複数ファイルをどうやって次々に渡すかだな。…そもそも Script-fu で、指定ディレクトリ内のファイル一覧を取得 → 特定拡張子のファイルのみ抽出、とかできないものだろうか。うーむ。

*1: 英語が読めないので、実際はどうなのかわからんけど。
*2: このへん、DOSの知識が必要なんだろうな。真面目に勉強したことがないからよくわからないのです。

以上です。

過去ログ表示

Prev - 2005/01 - Next
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project