GIMPで境界線(Line)と塗りつぶし(Paint)用に2つレイヤーを追加するプラグインを作りました。
#!/usr/bin/env python
# coding: utf8
from gimpfu import *
from array import array
# レイヤーを二つ追加
def plugin_main(image, layer):
# サイズ
w = image.width
h = image.height
# レイヤーの位置を取得
pos = pdb.gimp_image_get_item_position(image, layer)
# paintレイヤーの生成
paint_layer = pdb.gimp_layer_new(image,w,h,layer.type_with_alpha,'Paint',100,0)
# paintレイヤーの追加
pdb.gimp_image_insert_layer(image, paint_layer, None, pos)
# paintレイヤーの位置を取得
pos = pdb.gimp_image_get_item_position(image, paint_layer)
gimp.message("{0} {1}".format(paint_layer.name, pos))
# レイヤーの生成
line_layer = pdb.gimp_layer_new(image,w,h,layer.type_with_alpha,'Line',100,0)
# レイヤーの追加
pdb.gimp_image_insert_layer(image, line_layer, None, pos)
#gimp.message("{0}".format(AddPaintLayer))
# フィルターに登録
register("AddTwoLayer", "", "", "", "", "",
"AddTwoLayer",
"*",
[
(PF_IMAGE, "image", "Input image", None),
(PF_DRAWABLE, "drawable", "Drawable", None)
],
[],
plugin_main,
menu = "<Image>/Filters")
main()
実行すると以下のようにレイヤーが追加されます。
枠線を引いて内部を塗潰そうとすると、アンチエイリアスの1px分隙間が生じます。選択範囲を1px拡張すると隙間なく塗りつぶすことができますが、アンチエイリアスが塗りつぶされるのでジャギーが目立つようになります。
Line(境界線)レイヤーに枠線を描き、Paint(塗りつぶし)レイヤーで枠線内をファジー選択、選択範囲を1px拡張、塗りつぶし作業を繰り返し一連の作業が終わりましたら各レイヤーを合成して一枚のレイヤーを作成します。少し面倒ですが、枠線との間に隙間なく塗りつぶすことが出来ます。
よく行う定型作業ですのでスクリプトを作成してみました。
コメント