読者です 読者をやめる 読者になる 読者になる

Windows の Gimp で 画像一括変換 その1

Gimpには Script-FuっていうSchemaでスクリプトをかける仕組みがある(プラグインとかも) Unix版だとPerl-FuとかPython-Fuとかもあるんだけど、まぁWindowsじゃ使えない。

そこで、仕方ないのでScript-Fu で画像一括変換処理をするスクリプトでも書いてみるかと

あちこちググったが、主に参考にしたのは2箇所 gimp でバッチ処理 mieki256's diary

さて、困った。 いや、何が困ったかって、画像一括処理のイメージは、ディレクトリ指定して云々みたいなもんだけど Script-Fuじゃ opendir が使えない。 ファイルリストを作っておいて、そのファイルを読んで云々とかは出来るみたいだけど、それもメンドイ。

一方で、行う処理も、手作業で1回やったのを記憶して~ ってやって欲しいが、ようわからん。

というわけで、ある程度使い回しが効くScript-Fuの雛形を作る事にした。

Scheme使いじゃないので、汚いが気にするな

run_batch.scm C:\Documents and Settings\USERNAME\.gimp-2.2\scripts に保存すりゃ良い。

最初に処理するファイルを指定(バックスラッシュのクォートがメンドイ) 保存先のファイル名を変えるなら、prefix, suffix, extension(拡張子)辺りを適当に定義

後は ・ファイル読み込み ・変換処理 ・保存先ファイル名の作成 ・保存 って流れなので、変換処理だけ好きに書く。

run-batch 関数は、ループ呼び出してGimp終了してるだけ。 (ループはletでサクっと処理した方が綺麗なんだけど上手く行かなくて関数分けたまま) mapcar ってのが map らしいので、それでいいや

とりあえず、荒削りだけど変換処理だけ書けば何でも処理出来るスクリプトが出来た。

起動方法は、高速にGimp先生が動く様子を見たいなら

C:\Program Files\GIMP-2.0\bin> start gimp-2.2 -b "(run-batch)"

完全にバックグラウンドでやるなら

C:\Program Files\GIMP-2.0\bin> start gimp-2.2 -i -b "(run-batch)"

Windowsは start 使ったり ダブルクォートだったり、--no-interface が -i だったりするのに注意。

Gimp表示モードの時は、何やってるか分るんだけど、(違うファイル名で保存すると)最後に「変更を破棄しますか?」 とか言って来てウザイ 2,3のファイルで動作確認用にするといい

バックグラウンドでやるときは、(gimp-display-new image), (gimp-displays-flush) があると、上手く動いてくれないし (gimp-quit 0) が無いと、操作不能なままプロセスが終わらないので、忘れずに付ける事。

後は、よく使う処理をScript-Fuとして作っておけば それを並べるだけで、簡単に出来るね

とりあえず作ってみた、グレースケールにするScript-Fu gray.scm グレースケールに変換して、RGBに戻してるだけw

例によって scripts フォルダに保存。 Gimp起動中なら拡張→Script-Fu→スクリプトリフレッシュ 後は画像の上で右クリックするとScript-Fuの中に出てくるぞ