Python-Fuで選択範囲を別レイヤーに切り出し2

GIMP コンピュータ
GIMP
#!/usr/bin/env python
# coding: utf8

from gimpfu import *
from array import array

# 選択範囲で切り取り新規レイヤーにコピー

def plugin_main(image, layer):
    # 選択範囲が無い場合終了
    (non_empty,x1,y1,x2,y2) = pdb.gimp_selection_bounds(image)
    if (non_empty == 0):
        return
    # レイヤーにアルファチャンネルを追加
    pdb.gimp_layer_add_alpha(layer)
    # 選択部分を切り取り
    if pdb.gimp_edit_cut(layer) == 0:
        return
    # 貼り付け(フローティング)
    floating_layer = pdb.gimp_edit_paste(layer, 0)
    # フローティングレイヤーをレイヤーに変換
    pdb.gimp_floating_sel_to_layer(floating_layer)
# フィルターに登録
register("CutToNewLayer", "", "", "", "", "",
    "CutToNewLayer", 
    "RGB*",
    [
    (PF_IMAGE, "image", "Input image", None),
    (PF_DRAWABLE, "drawable", "Drawable", None)
    ],
    [],
    plugin_main,
    menu = "<Image>/Filters")
main()

前回はレイヤーを切り出すのであればレイヤー関連のプロシージャを使うという固定観念から作ったスクリプトですが、今回はキーボードやマウス操作などの編集関連のプロシージャを使っています。

内容は範囲選択された状態で「切り取り」⇒「貼り付け」⇒フローティング選択範囲を「新しいレイヤーを生成」の3つのプロシージャで機能を実現しています。前回のスクリプトと比べて大分行数が減りました。

コメント