「Script-Fu」の版間の差分

提供:GizmoLabs - だいたい CAD LISP なサイト
編集の要約なし
編集の要約なし
5行目: 5行目:
* ファイルに記述して実行する場合、ファイルの拡張子は .scm のテキストファイル。
* ファイルに記述して実行する場合、ファイルの拡張子は .scm のテキストファイル。
* gimp の exe に引数で渡してバッチで実行もできる。
* gimp の exe に引数で渡してバッチで実行もできる。
  ; 例:以下のフォルダ内のファイルを開いてアンシャープマスクをかけて保存する関数を実行する場合
  ; 例:フォルダ内のファイルを開いてアンシャープマスクをかけて保存する関数を実行する場合
  ; 以下のスクリプトファイルは、simple-unsharp-mask.scm ファイルにして gimp の /scripts フォルダに保存しておく
  ; スクリプトファイルは、simple-unsharp-mask.scm ファイルにして gimp の /scripts フォルダに保存しておく
  (define (batch-unsharp-mask pattern radius amount threshold)  
  (define (batch-unsharp-mask pattern radius amount threshold)  
   (let*  
   (let*  

2022年2月26日 (土) 09:03時点における版

イメージ処理ソフト GIMP の Scheme ベース(GIMP 2.4 以降は TinyScheme ベースらしい ) なカスタマイズ言語で 2.0 からサポートされている。 オフィシャルなドキュメントはここ

  • GIMP内から記述して実行する場合は、メニューのフィルターに"Script-Fuコンソール" っていうのがあるのでそれを実行して入力してく。(Script-Fu で使えるプロシージャの内容を調べるのにも使える。)
  • ファイルに記述して実行する場合、ファイルの拡張子は .scm のテキストファイル。
  • gimp の exe に引数で渡してバッチで実行もできる。
; 例:フォルダ内のファイルを開いてアンシャープマスクをかけて保存する関数を実行する場合
; スクリプトファイルは、simple-unsharp-mask.scm ファイルにして gimp の /scripts フォルダに保存しておく
(define (batch-unsharp-mask pattern radius amount threshold) 
  (let* 
    ((filelist (cadr (file-glob pattern 1)))) 
    (while (not (null? filelist)) 
      (let* 
        (
          (filename (car filelist)) 
          (image (car (gimp-file-load RUN-NONINTERACTIVE filename filename))) 
          (drawable (car (gimp-image-get-active-layer image)))
        ) 
        (plug-in-unsharp-mask RUN-NONINTERACTIVE image drawable radius amount threshold) 
        (gimp-file-save RUN-NONINTERACTIVE image drawable filename filename) 
        (gimp-image-delete image)) 
        (set! filelist (cdr filelist))
    )
  )
)

; で、コマンドライン的には以下のような感じで実行する。.png ファイルを対象にしています。
c:\gimp\gimp-2.10.exe -i -b '(batch-unsharp-mask "*.png" 5.0 0.5 0)' -b '(gimp-quit 0)'
; exe の起動オプション "-i" はユーザーインターフェースなしで起動、 "-b" はバッチ起動です。


関数や変数

ぶっちゃけ資料なさすぎて使わせる気無いだろ!とか思いつつ、Scheme ベースなので、Scheme の資料を当たればいい。 Scheme の基礎的な関数を使いつつ、GIMP のプロシージャと組み合わせて書いていく感じ?


Scheme の関数例

; 変数をa,b を宣言して和を出す例
(let* ((a 1) (b 2))
  (+ a b)
)

; 関数 AddXY を inX inY の引数がある形で定義した例
(define (AddXY inX inY) (+ inX inY) )

; 関数をGIMPに登録する例
 (script-fu-register
   "script-fu-text-box"                        ; 関数名
   "Text Box"                                  ; メニューラベル
   "Creates a simple text box, sized to fit\
     around the user's choice of text,\
     font, font size, and color."              ; 概要説明
   "Michael Terry"                             ; 作者
   "copyright 1997, Michael Terry;\
     2009, the GIMP Documentation Team"        ; 権利
   "October 27, 1997"                          ; 作成日
   ""                     ; スクリプトが動作するイメージタイプ
   SF-STRING      "Text"          "Text Box"   ; 文字列変数
   SF-FONT        "Font"          "Charter"    ; フォント変数
   SF-ADJUSTMENT  "Font size"     '(50 1 1000 1 10 0 1)
                                               ; スピンボタン
   SF-COLOR       "Color"         '(0 0 0)     ; 色変数
 )
 (script-fu-menu-register "script-fu-text-box" "<Image>/File/Create/Text")

プロシージャ一覧