■ Gimp Script−Fu覚書

文字列のファイルへの書き出し(2003.06.30)

 test_write2file.scm
; Test : write string to file.
(define (test_write2file str)
        (set! fp (fopen "c:/temp/zxcv.txt" "w"))
        (fwrite str fp)
        (fwrite "\n" fp)
        (fclose fp)
        (gimp-quit 0) 
        )

; Register our script with script-fu.
(script-fu-register "test_write2file"
        "/Xtns/Script-Fu/Misc/test_wite2file"
        "Test write to file"
        "Furafura"
        "Copyright 2003, Furafura"
        "2003.06.30"
        ""
        SF-STRING     "str" "Test String"
        )
 test.bat
"c:\Program Files\Gimp\bin\gimp" -i -b "(test_write2file \"%1\")"
 Gimpをバッチモードで起動してます。『test 今日は良い天気です。』とMS-DOSプロンプトから入力します。上のスクリプトでは出力ファイルは"c:/temp/zxcv.txt"と指定しています。

日本語のコメント(2003.06.30)

 test_comment.scm
; Test : コメントに日本語は使えるかをテスト
(define (test_comment str)
        (set! fp (fopen "c:/temp/zxcv.txt" "w"))
        (fwrite str fp)
        (fwrite "\n" fp)
        (fclose fp)
        (gimp-quit 0) 
        )

; Register our script with script-fu.
(script-fu-register "test_comment"
        "/Xtns/Script-Fu/Misc/test_comment"
        "Test write to file"
        "Furafura"
        "Copyright 2003, Furafura"
        "2003.06.30"
        ""
        SF-STRING     "str" "Test String"
        )
 test.bat
"c:\Program Files\Gimp\bin\gimp" -i -b "(test_comment \"%1\")"
 日本語のコメントが使用できるかを試してみたところ、問題なく動きました。ただ、これがどんな場合でも大丈夫なのかは良く分かりません。

カレントディレクトリ(2003.07.01)

 test_currentdir.scm
; Test : カレントディレクトリはどこになっているかチェック
(define (test_currentdir str)
        (set! fp (fopen "zxcv.txt" "w"))
        (fwrite str fp)
        (fwrite "\n" fp)
        (fclose fp)
        (gimp-quit 0) 
        )

; Register our script with script-fu.
(script-fu-register "test_currentdir"
        "/Xtns/Script-Fu/Misc/test_currentdir"
        "Test check current directory"
        "Furafura"
        "Copyright 2003, Furafura"
        "2003.06.30"
        ""
        SF-STRING     "str" "Test String"
        )
 test.bat
"c:\Program Files\Gimp\bin\gimp" -i -b "(test_currentdir \"%1\")"
 カレントディレクトリがどこになっているのか調べてみました。結果は予想通りで、バッチファイルを実行したところにzxcv.txtが作られました。

繰り返し処理(2003.07.01)

 test_while.scm
; Test : 繰り返し処理
(define (test_while str num)
        (set! fp (fopen "zxcv.txt" "w"))
        (set! i 0)
        (while (< i num)
                (fwrite (string-append str " " (number->string i 10 2) "回目\n") fp)
                (set! i (+ i 1))
        )
        (fclose fp)
        (gimp-quit 0) 
        )

; Register our script with script-fu.
(script-fu-register "test_while"
        "/Xtns/Script-Fu/Misc/test_while"
        "Test repeat processing"
        "Furafura"
        "Copyright 2003, Furafura"
        "2003.06.30"
        ""
        SF-STRING     "str" "Test String"
        SF-NUMBER     "num" 10
        )
 test.bat
"c:\Program Files\Gimp\bin\gimp" -i -b "(test_while \"%1\" %2)"
 繰り返し処理はwhileしかないようです。まあ、これがあれば全て間に合うので、あまり問題は無いのですが、他の言語になれているとちょっと面食らってしまいます。