GIMPのPython-Fuでチャンネル関連のプロシージャ

コンピュータ
チャンネル関連のプロシージャを調べてみました。
GIMPのチャンネルはRGBなどの各色の要素やアルファチャンネルなどの透明度を表す以外に、選択範囲をチャンネルとして保存したり、保存した選択チャンネルから画像を範囲選択をすることが出来ます。
既存の選択範囲に新たな選択範囲をくわえたり、引いたりするような選択範囲の論理演算処理をする場合の変数的な使い方をすることが考えられます。

選択範囲をチャンネルへ保存

new_channel = pdb.gimp_selection_save(image)

実行すると「選択マスクのコピー」という名前でチャンネルが登録される。

チャンネル名の変更

new_channel.name = "New_Channel1"

チャンネルから範囲選択する

pdb.gimp_image_select_item(image, 2, channel)

gimp_image_select_item()の第2引数にセットする値は、0.選択範囲に加える1.選択範囲から引く2.チャンネルを選択範囲に3.選択範囲との交わりだと思われる。(要確認)

イメージの選択チャンネルの一覧を取得

image.channels

イメージの選択チャンネルの数を取得

len(image.channels)

イメージから選択チャンネルを作成

channel = pdb.gimp_channel_new_from_component(image, 0, "NAME1")
pdb.gimp_image_insert_channel(image, channel, None, -1)

まず、gimp_channel_new_from_component()でイメージの赤チャンネル(第2引数を0にセット)もとにチャンネルを生成します。
生成したチャンネルをgimp_image_insert_channel()でイメージの先頭に挿入します。

サンプル画像(イメージ)は背景が白色の画像に矩形で黒に塗りつぶした状態で実行してみました。この場合RGBの各チャンネルは全て同じになっているはずです。プロシージャを実行し「チャンネルを選択範囲に」を実行したところ白色の部分が範囲選択されていました。
ちなみにgimp_channel_new_from_component()の第2引数に渡す値は以下の通り
0.赤チャンネル、1.緑チャンネル、2.青チャンネル、3.グレイ、4.インデックス、5.アルファチャンネル
0~2はRGBモード。5はアルファチャンネルが追加された状態。4.はインデックスモード。3.グレイスケールモード。だと思われます。要確認

アイテムはチャンネルか確認

pdb.gimp_item_is_channel(channel)

チャンネルの場合1(TRUE)チャンネル以外の場合0(FALSE)が返る

コメント