GIMP pythonfu 从当前图像中获取可绘制对象
GIMP pythonfu get drawable from current image
我正在遍历所有打开的图像。我想对他们每个人应用阈值。由于阈值插件将 drawable
作为参数,因此每次更改图像时都应更改可绘制对象,至少这在编程上是有意义的。那么,如何从当前图像中获取可绘制对象?
for subimage in gimp.image_list():
pdb.gimp_undo_push_group_start(subimage)
pdb.gimp_drawable_set_image(drawable, subimage)
pdb.plug_in_randomize_pick(image,drawable,rndm_pct, rndm_rcount, randomize, seed)
spread_amount_x, spread_amount_y = 3, 3
# pdb.plug_in_spread(subimage,drawable,spread_amount_x, spread_amount_y)
pdb.plug_in_spread(subimage,drawable,spread_amount_x, spread_amount_y)
pdb.plug_in_gauss_rle2(subimage,drawable,horizontal, vertical)
# pdb.gimp_threshold(drawable, low_threshold, high_threshold)
pdb.gimp_undo_push_group_end(subimage)
请注意,注释掉的阈值会在所选图像上重复应用阈值,而不是循环应用所有图像。为了让我做到这一点,我必须在上下文中切换到图像的可绘制对象。
如果图像只有一个图层,则:
drawable=subimage.layers[0]
或
drawable=subimage.active_layer
如果你有好几层,那么你可以使用索引(顶层是layers[0]
,bottom/background层是layers[-1]
),或者你通过其他方式,例如:
drawable=[d for d in image.layers if d.name=='Target'][0]
PS:如果您冻结撤消堆栈(或者甚至可能完全禁用撤消)而不是执行 undo-groups,您的脚本可能会 运行 更快并且使用更少的 RAM。
我正在遍历所有打开的图像。我想对他们每个人应用阈值。由于阈值插件将 drawable
作为参数,因此每次更改图像时都应更改可绘制对象,至少这在编程上是有意义的。那么,如何从当前图像中获取可绘制对象?
for subimage in gimp.image_list():
pdb.gimp_undo_push_group_start(subimage)
pdb.gimp_drawable_set_image(drawable, subimage)
pdb.plug_in_randomize_pick(image,drawable,rndm_pct, rndm_rcount, randomize, seed)
spread_amount_x, spread_amount_y = 3, 3
# pdb.plug_in_spread(subimage,drawable,spread_amount_x, spread_amount_y)
pdb.plug_in_spread(subimage,drawable,spread_amount_x, spread_amount_y)
pdb.plug_in_gauss_rle2(subimage,drawable,horizontal, vertical)
# pdb.gimp_threshold(drawable, low_threshold, high_threshold)
pdb.gimp_undo_push_group_end(subimage)
请注意,注释掉的阈值会在所选图像上重复应用阈值,而不是循环应用所有图像。为了让我做到这一点,我必须在上下文中切换到图像的可绘制对象。
如果图像只有一个图层,则:
drawable=subimage.layers[0]
或
drawable=subimage.active_layer
如果你有好几层,那么你可以使用索引(顶层是layers[0]
,bottom/background层是layers[-1]
),或者你通过其他方式,例如:
drawable=[d for d in image.layers if d.name=='Target'][0]
PS:如果您冻结撤消堆栈(或者甚至可能完全禁用撤消)而不是执行 undo-groups,您的脚本可能会 运行 更快并且使用更少的 RAM。