Python-fu 操作おさらい
GIMPでよく使う基礎処理をまとめ。
imageの取得
ファイルロード時
import sep
filepath = C:\"
filename = filepath + sep + raw_filename
image = pdb.gimp_file_load(filename, raw_filename)
display = pdb.gimp_display_new(image)
ロード済の状態から取得する場合
image = gimp.image_list()[0]
操作するレイヤーの設定
レイヤーIDで指定する場合。レイヤー一括処理する時に使う
num , ids= pdb.gimp_image_get_layers(image)
layer = gimp.Item.from_id(ids[0]) #リストからのレイヤーID指定
レイヤー名で指定する場合
layer = pdb.gimp_image_get_layer_by_name(image, name) ## レイヤー名からのレイヤ指定
レイヤー追加
gimp.Layer()だけではアルファチャンネルは含まれない事に注意
image = gimp.image_list()[0]
name = "新規レイヤー"
width = image.width
height = image.height
type = RGB_IMAGE
opacity = 100
mode = NORMAL_MODE
layer = gimp.Layer(image, name, width, height, type, opacity, mode)
# 最前列にレイヤーを追加
position = 0
image.add_layer(layer, position)
# アルファチャンネルの追加
pdb.gimp_layer_add_alpha(layer)
pdb.gimp_edit_clear(layer)
レイヤーの確認・作成
レイヤーのチェック、なければ作成
num , ids = pdb.gimp_image_get_layers(image)
name = "test"
for layer_id in ids:
layer = gimp.Item.from_id(layer_id)
if layer.name == name:
break
else:
name = "mask"
layer = add_layer(image,name)
全レイヤーを処理する例
num , ids = pdb.gimp_image_get_layers(image)
for layer_id in ids:
layer = gimp.Item.from_id(layer_id)
print layer
# 名前で処理しないレイヤーを判別
if through_layername1 in layer.name or through_layername2 in layer.name:
continue
# レイヤーマスクを無効
if pdb.gimp_layer_get_apply_mask(layer):
pdb.gimp_layer_set_apply_mask(layer, True)
# 不透明な範囲を選択
pdb.gimp_selection_none(image)
pdb.gimp_image_select_item(image, 0, layer)
# 描画色の設定
maskcolor = (255,255,255,1.0)
pdb.gimp_context_set_foreground(maskcolor)
# 塗りつぶす[Ctrl+;]
pdb.gimp_edit_fill(layer, FOREGROUND_FILL)