GIMP Home
入手方法
気づいたことなど
おまけ
素材集
使えるプラグイン
プラグイン詳細
script-fuリンク集
更新記録
 
ロゴ1
ロゴ2
その他1
その他2
使えるscript-fu
使えるscript-fu2
使えるscript-fu3
使えるscript-fu4
script-fu構文
エラー!
バージョン別比較
 
作品
 
 
ホーム


Script-fu構文

入力ボックスの引数
SF-ADJUSTMENT'(初期値 最小値 最大値 ステップ幅 ステップ幅 桁数(0なら整数) 種類(0または1))
SF-ADJUSTMENT例1'(24 2 100 1 10 0 1)
SF-ADJUSTMENT例2'(0.01 0 1 0.01 0.01 2 0)
SF-BRUSH'("Circle (07)" 1.0 20 0)
SF-STRING"3D-FUN!"
SF-FONT"Sans Bold"
SF-IMAGE0
SF-DRAWABLE0
SF-OPTION'("White" "Black" "Pattern" "Gradient")
SF-TOGGLEFALSE
SF-COLOR'(153 153 153)
SF-GRADIENT"Incandescent"
SF-PATTERN"Blue Web"
SF-VALUE"15"
SF-FILENAME(string-append "" gimp-data-dir "/scripts/images/beavis.jpg")

描画モード
レイヤーlayer-copyのモードをスクリーンにする
(gimp-layer-set-mode layer-copy SCREEN-MODE)
NORMAL-MODE
MULTIPLY-MODE
DIVIDE-MODE
SCREEN-MODE
OVERLAY-MODE
DIFFERENCE
SOFTLIGHT-MODE
HARDLIGHT-MODE(18)
ADDITION-MODE
SUBTRACT-MODE
LIGHTEN-ONLY-MODE
DARKEN-ONLY-MODE
COLOR-MODE
VALUE-MODE
標準
乗算
除算
スクリーン
オーバーレイ
差分
ソフトライト
ハードライト
加算
減算
比較(明)
比較(暗)

明度

値の設定
blurの値をheightを14で割った値とする
(set! blur (/ height 14))
beの値を0とする
(set! be 0)
※あらかじめ(let(・・・))の中に(blur 0)と記述しておくこと!(値は0以外でもよい)
depthの値に10を掛ける
(set! depth (* depth 10))

入力ボックスの選択について
SF-OPTION _"Blend Mode" '(_"mode1" _"mode2" _"mode3" _"mode4" _"mode5" _"mode6")
このように設定すると、入力ボックスでmode1からmode6までを選択できるようになる。ここで得た値は次のようにして 使う(modeoptionは変数、2行目と4行目は命令文)。
(cond ((= modeoption 0)
        (gimp-layer-set-mode active-layer SCREEN-MODE))
        ((= modeoption 1)
        (gimp-layer-set-mode active-layer OVERLAY-MODE))・・・)


レイヤー
対象レイヤーをコピーする
(layer-copy (car (gimp-layer-copy drawable TRUE)))
コピーしたレイヤーへのレイヤーマスクを作る
(layer-mask (car (gimp-layer-create-mask layer-copy WHITE-MASK)))
レイヤーを画像に追加
(gimp-image-add-layer img layer-copy -1)
レイヤーマスクを画像 (コピーしたレイヤー) に追加
(gimp-image-add-layer-mask img layer-copy layer-mask)
レイヤーにアルファチャンネルを追加
(gimp-layer-add-alpha layer1)
レイヤーを画像から削除
(gimp-image-remove-layer img layer1)
選択範囲を削除
(gimp-edit-clear layer1)
レイヤーをクリーニング
(gimp-edit-clear layer1)
レイヤーのイメージをコピーして保管しておく
(gimp-edit-copy layer-copy)
それをレイヤーマスクにペーストする
(gimp-floating-sel-anchor (car (gimp-edit-paste layer-mask 0)))
レイヤーマスクをレイヤーに適用する
(gimp-image-remove-layer-mask img layer-copy APPLY)
レイヤーlayer-copyの不透明度を変更する
(gimp-layer-set-opacity layer-copy 80)
レイヤーを非表示に設定する
(gimp-layer-set-visible layer FALSE) ←GIMP1.2
(gimp-drawable-set-visible layer FALSE) ←GIMP2.0以降
可視レイヤーの統合
(gimp-image-merge-visible-layers img 0)
(set! k1 (car (gimp-image-merge-visible-layers img 0)))


イメージ
画像imgの全領域を選択する
(gimp-selection-all img)
imgの選択領域を解除する
(gimp-selection-none img)
画像を更新する
(gimp-displays-flush)
新しい画像を表示する
(gimp-display-new img)

その他命令
アルファチャンネルを消去する
(gimp-image-remove-channel img active-selection)

threshold:閾値
(gimp-threshold a-layer 100 200)

while:一定命令の繰り返し
(while (< y height)
:
:
(set! y (+ y 1))
)


gimp-message:メッセージ
(gimp-message "Hello")
(gimp-message (number->string a))


グラデーション
(gimp-gradients-set-active gradient1)
(gimp-blend drawable CUSTOM paint-type gtype opacity 20 repeat(0-2) FALSE 0 0 x1 y1 x2 y2)

例:(gimp-blend text-layer CUSTOM NORMAL gradmd2 100 20 REPEAT-NONE FALSE 0 0 0 0 width 0)

fill:塗りつぶし
(gimp-edit-fill BG-layer BG-IMAGE-FILL)
(gimp-drawable-fill tmp-layer WHITE-IMAGE-FILL)
(gimp-bucket-fill background 0 COLOR 100 255 FALSE 0 0)
(gimp-edit-bucket-fill theLayer FG-BUCKET-FILL NORMAL-MODE 100 0 FALSE 0 0)


(gimp-file-save 1 img layer1 output input)
(gimp-quit 0)

変更点
  • aset - TinySchemeの vector-set! で置き換え
  • aref - TinySchemeの vector-ref で置き換え
  • fopen - TinySchemeの open-input-file で置き換え
  • mapcar - TinySchemeの map で置き換え
  • nil - TinySchemeの '() で置き換え
  • nreverse - TinySchemeの reverse で置き換え
  • pow - TinySchemeの expt で置き換え
  • prin1 - TinySchemeの write で置き換え
  • print - TinySchemeの write (newlineに続けて) で置き換え
  • strcat - TinySchemeの string-append で置き換え
  • string-lessp - TinySchemeの string<? で置き換え
  • symbol-bound? - TinySchemeの defined? で置き換え
  • the-environment - TinySchemeの current-environment で置き換え
  • *pi* - 定数 *pi* はTinySchemeにおいて定義済ではありませんが (* 4 (atan 1.0)) で定義することができます
  • butlast - TinySchemeで使用することはできませんが別コード (reverse (cdr (reverse x))) が利用可能です
  • cons-array - TinySchemeの make-vector で置き換え

  • FG-IMAGE-FILL - FOREGROUND-FILL
  • gimp-brushes-get-brush - gimp-context-get-brush
  • gimp-palette-get-foreground - gimp-context-get-foreground

  • 1.2では可能だった(gimp-image-add-layer img bg-layer 0)のまえに レイヤーサイズを変えるなどすることは、2.0以降はできなくなっているので注意。


car, cdrなど
(set! color '(128 253 147))の時、
(car color) = 128
(caddr color) = 253
(cdr color) = (253 147)


例文
指定した色Colorで塗りつぶし、終わったらパレットを元通りの色にする
(let ((old-fg(car (gimp-palette-get-foreground))))
     (gimp-palette-set-foreground Color)
     (gimp-edit-fill layer-copy 0)
     (gimp-selection-none img)
     (gimp-palette-set-foreground old-fg))



前景色の設定
(gimp-palette-set-foreground tcolor)
(gimp-layer-set-preserve-trans text-layer TRUE)
(gimp-edit-fill text-layer FG-IMAGE-FILL)
(cond((= foption 1)
  (gimp-gradients-set-active grad) ;グラデーションの設定
  (gimp-layer-set-preserve-trans text-layer TRUE) ;透明部分を保護
  (gimp-blend text-layer CUSTOM NORMAL gmode 100 20 REPEAT-NONE FALSE 0 0 0 0 width height)
  )
  ((= foption 2)
    (gimp-selection-layer-alpha text-layer)
    (gimp-patterns-set-pattern pat)
    (gimp-bucket-fill text-layer PATTERN-BUCKET-FILL NORMAL 100 255 FALSE 0 0)
    (gimp-selection-none img) ;領域を選択しないとテクスチャで塗りつぶすことはできない
    ))



画像の大きさを変更する
(gimp-image-resize img width height xoffset yoffset)
(gimp-layer-resize text-layer width height xoffset yoffset)


blurの値をsizeの1/10とし、画像imgのレイヤーlayerにガウシアン暈しをかける
(let(
    (blur (/ size 10)))
    (plug-in-gauss-iir2 1 img layer blur blur))



元の画像を残す
imgは元の画像、hznimgは元の画像を保存するものである
(define (script-fu-ファイル名 img・・・)
(set! hznimg (car (gimp-channel-ops-duplicate img)))
(let* (・・・
(gimp-image-clean-all hznimg)
(gimp-display-new hznimg)
))

2行目で画像を保存し、4,5行目で保存した画像を表示している

やりやすい方法
(define (script-fu-stamp img2 drawable) ←imgをimg2に変更
(let* ((old-bg-color (car (gimp-palette-get-background)))
(old-fg-color (car (gimp-palette-get-foreground)))
(sizeX (car (gimp-image-width img2))) ←imgをimg2に変更
(sizeY (car (gimp-image-height img2))) ←imgをimg2に変更
(img 0)
)
(set! img (car (gimp-channel-ops-duplicate img2)))
(gimp-image-undo-disable img)
:
:
(gimp-image-undo-enable img)
(gimp-display-new img)
))



履歴
(gimp-undo-push-group-start img)
・・・
(gimp-undo-push-group-end img)

GIMP2.0以降は
(gimp-image-undo-group-start img)
・・・
(gimp-image-undo-group-end img)

このようにすると・・・の部分の履歴がUndo1回分になる

履歴2
(gimp-image-undo-disable img)
・・・
(gimp-image-undo-enable img)

このようにすると・・・の部分のUndoができなくなる!!

GIMP

kikidide@gmail.com