【Gimp】レイヤー結合を試してみる

前回、Gimppython のコードが実行できることがわかったので、

www.dev-dev.net

今度はレイヤーの結合をしてみる。

↓新規レイヤーを作るpythonコードはこちらを参照。

python_fu_sample.py · GitHub

レイヤーの結合には、

Gimp PDB のドキュメントに、「gimp_image_merge_down」という関数があった。

oldhome.schmorp.de

どういうものかイマイチわからなかったので、いろいろ試してみた。

まずは、レイヤーを3つ作ってみた。

image = create_image(500, 500)
layer1 = add_layer(image, "背景1",250,250,1)
draw_rect(layer, 0, 0, 250, 250)
layer2 = add_layer(image, "背景2",300,300,2)
draw_rect(layer2, 0, 0, 300, 300)
layer3 = add_layer(image, "背景3",500,500,0)
draw_rect(layer3, 0, 0, 400, 400)
// pdb.gimp_image_merge_down (image,layer1,EXPAND_AS_NECESSARY)
display_image(image)

add_layer 関数に横幅、縦幅、レイヤー階層も設定できるように引数(width ,height ,position)を追加してみた。

def add_layer(image, name, width, height, position):

position に、0を設定すると最前面、数が多いほど背面側に設置されることがわかった。

この場合、最前面 layer3[0]、真ん中 layer1[1]、最背面 layer2[2] となる。

そして、gimp_image_merge_down を使うと、最背面にあるレイヤーと指定した好きなレイヤーを結合できるようだ。

例:最背面 の layer2 とlayer1 を結合させたい場合、

layer12 = pdb.gimp_image_merge_down (image,layer1,EXPAND_AS_NECESSARY)

もし、同じ最背面のlayer2 を指定した場合、layer2 と layer2 を結合させようとしたので、エラーになる。

pdb.gimp_image_merge_down (image,layer2,EXPAND_AS_NECESSARY)

もし、3つのレイヤーを全部見せようとすると、以下のようになる。

image = create_image(500, 500)
layer3 = add_layer(image, "背景3",400,400,0)
draw_rect(layer3, 0, 0, 400, 400)
layer2 = add_layer(image, "背景2",300,300,0)
draw_rect(layer2, 0, 0, 300, 300)
layer1 = add_layer(image, "背景1",250,250,0)
draw_rect(layer1, 0, 0, 250, 250)
layer23 = pdb.gimp_image_merge_down (image,layer2,EXPAND_AS_NECESSARY)
layer123 = pdb.gimp_image_merge_down (image,layer1,EXPAND_AS_NECESSARY)
display_image(image)

この場合、最前面 layer1 [0]、真ん中 layer2[1]、最背面 layer3 となる[2]。

(全てのレイヤーを position 0の最前面で配置しているが、追加するたびに古いものは背面にいくので)

知識ゼロからはじめる GIMPの教科書 2.10対応

知識ゼロからはじめる GIMPの教科書 2.10対応

  • 作者: ソシムデザイン編集部
  • 出版社/メーカー: ソシム
  • 発売日: 2019/09/04
  • メディア: 単行本

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA