GIMP3.0RCでScript-Fuを試してみる。「選択範囲を別レイヤーに切り出す」

GIMP コンピュータ
GIMP

GIMP3.0用にスクリプトを直しました。

選択範囲を別レイヤーに切り出す

1枚の画像をパーツごとに別レイヤーに切り出し作業用のスクリプトです。

GIMP3.0RCをインストールしてScript-Fuを少し試してみたので、よく使うスクリプトをGIMP3.0RCで動作するように修正してみました。

ファイル名:cut-new-layer.scm

; 
; 選択範囲をレイヤーに切り出すスクリプト
; 
(define (script-fu-cut-new-layer img layer)
    
    ; 選択範囲座標の取得
    (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-layer-add-alpha layer)
    ; レイヤーの複製
    (define new_layer (car (gimp-layer-copy layer 1)))
    (gimp-image-insert-layer img new_layer 0 0)
    ; 選択範囲外を透明で塗りつぶし
    (gimp-selection-invert img)
    (gimp-drawable-edit-fill new_layer 4)
    ; 元レイヤーの選択部分を切り抜き
    (gimp-selection-invert img)
    (gimp-drawable-edit-fill layer 4)
    (gimp-displays-flush)
)
(script-fu-register "script-fu-cut-new-layer"
                    "Cut _NewLayer"
            "Cut New Layer"
            "Maywork"
            "Copyright 2020, Maywork"
            "19/11/2024"
            "RGB* GRAY*"
            SF-IMAGE "Input Image" 0
            SF-DRAWABLE "Input Layer" 0
)
(script-fu-menu-register "script-fu-cut-new-layer"
                         "<Image>/Filters/My")

GIMP3.0で無くなったプロシージャ関係を削除しました。
後、透明で塗りつぶしのプロシージャをgimp-drawable-edit-fillに置き換えました。

使い方

切り出したい部分を選択した状態でフィルターを実行

選択した範囲の別レイヤーが出来上がる。

元のレイヤーは切り抜かれた状態になります。

追記:20250825
・切り出したレイヤーが先頭に配置されて使いづらい。
・GIMP3.0の場合Ctrl+X切り取りCtrl+V貼り付けで、ほぼ同じことが出来るようなので態々スクリプトを組む意味が少なくなりました。

2値化レイヤーの追加

ファイル名:add-threshold-layer.scm

; 
; 2値化したレイヤーを追加スクリプト
; 
(define (script-fu-add-threshold-layer img layer)
    ; レイヤーの複製
    (define new_layer (car (gimp-layer-copy layer 1)))
    (gimp-image-insert-layer img new_layer 0 0)
    ; しきい値による2値化
    (gimp-drawable-threshold new_layer 5 0.5 1.0)
    (gimp-displays-flush)
)
(script-fu-register "script-fu-add-threshold-layer"
                    "2値化"
            "2値化したレイヤーを追加スクリプト"
            "Maywork"
            "Copyright 2020, Maywork"
            "04/07/2022"
            "RGB* GRAY*"
            SF-IMAGE "Input Image" 0
            SF-DRAWABLE "Input Layer" 0
)
(script-fu-menu-register "script-fu-add-threshold-layer"
                         "<Image>/Filters/My")

追記:20250825
・こちらのスクリプトも追加されるレイヤーが先頭に配置されて使いづらい
・レイヤーの複製⇒しきい値による二値化で代替可能。

コメント