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

GIMP コンピュータ
GIMP

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に置き換えました。

使い方

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

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

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

コメント