GIMP2.10でScript-Fuを試してみる4。「若干大き目にファジー選択」

GIMP コンピュータ
GIMP

穴の削除

(gimp-selection-flood img)

選択範囲を拡大

(define n_px 9)
(gimp-selection-grow img n_px)

前景色に白をセットし塗りつぶし

(gimp-context-set-foreground '(255 255 255))
(gimp-drawable-edit-fill layer 0)

中心でファジー選択

(gimp-fuzzy-select layer (+ x1 (/ (- x2 x1) 2)) (+ y1 (/ (- y2 y1) 2)) 127 2 1.0 0 0 0)

レイヤーの削除

(gimp-image-remove-layer img layer)

スクリプト全体

スクリプトの保存場所:%Userprofile%\AppData\Roaming\GIMP\2.10\scripts
ファイル名:select-larger.scm

; 
; 若干大き目にファジー選択
;
; あらかじめ選択用に2値化したレイヤーに対しファジー選択した状態で実行
; 
(define (script-fu-select-larger img layer)
    
    ; Undo記録開始
    (gimp-undo-push-group-start img)
    ; 拡大するpxサイズ
    (define n_px 9)
    ; 選択範囲座標の取得
    (define sb (gimp-selection-bounds img))
    (define non_empty (car sb))
    (define x1 (car (cdr sb)))
    (define y1 (car (cdr (cdr sb))))
    (define x2 (car (cdr (cdr (cdr sb)))))
    (define y2 (car (cdr (cdr (cdr (cdr sb))))))
    ; 穴の削除
    (gimp-selection-flood img)
    ; 選択範囲を拡大
    (gimp-selection-grow img n_px)
    ; 選択範囲の反転
    (gimp-selection-invert img)
    ; 前景色に白をセットし塗りつぶし
    (gimp-context-set-foreground '(255 255 255))
    (gimp-drawable-edit-fill layer 0)
    ; 中心でファジー選択
    (gimp-fuzzy-select layer (+ x1 (/ (- x2 x1) 2)) (+ y1 (/ (- y2 y1) 2)) 127 2 1.0 0 0 0)
    ; 選択範囲を1px拡大
    (gimp-selection-grow img 1)
    ; 前景色に黒をセットし塗りつぶし
    (gimp-context-set-foreground '(0 0 0))
    (gimp-drawable-edit-fill layer 0)
    ; 中心でファジー選択
    (gimp-fuzzy-select layer (+ x1 (/ (- x2 x1) 2)) (+ y1 (/ (- y2 y1) 2)) 127 2 1.0 0 0 0)
    ; レイヤーの削除
    (gimp-image-remove-layer img layer)
    ; Undo記録終了
    (gimp-undo-push-group-end img)
    (gimp-displays-flush)
)
(script-fu-register "script-fu-select-larger"
                    "<Image>/Filters/My/大き目に選択..."
            "あらかじめ選択用に2値化したレイヤーに対しファジー選択した状態で実行。"
            "Maywork"
            "Copyright 2020, Maywork"
            "04/07/2022"
            "RGB* GRAY*"
            SF-IMAGE "Input Image" 0
            SF-DRAWABLE "Input Layer" 0
)

コメント