我似乎找不到任何方法在python-fu接口的任何地方将组图层添加到另一个组图层.
我试图在Gimp.Layer对象上找到方法,但没有运气.
如何使用python-fu将组图层添加到另一个图层组?
在2.8版本之前的最后几分钟添加了对Python-fu上的图层组的支持,并且相当不完整.
因此,在GIMP 2.8中创建适当的图层组的唯一方法是使用pdb调用:
group = pdb.gimp_layer_group_new(img)
group.name = "my group"
Run Code Online (Sandbox Code Playgroud)
(在gimp 2.8上使用img.GroupLayer调用是错误的 - 应该是未来的方法)
获得组后,可以使用a将其插入图像的任何位置
pdb.gimp_image_insert_layer(<img>, <layer>, <parent>, <position>)
Run Code Online (Sandbox Code Playgroud)
像:
>>> img = gimp.Image(640, 480, RGB)
>>> pdb.gimp_display_new(img)
<display>
>>> parent_group = pdb.gimp_layer_group_new(img)
>>> child_group_1 = pdb.gimp_layer_group_new(img)
>>> child_group_2 = pdb.gimp_layer_group_new(img)
>>> grand_child_group = pdb.gimp_layer_group_new(img)
>>> img.add_layer(parent_group, 0)
>>> pdb.gimp_image_insert_layer(img, child_group_1, parent_group,0)
>>> pdb.gimp_image_insert_layer(img, child_group_2, parent_group,1)
>>> pdb.gimp_image_insert_layer(img, grand_child_group, child_group_1,0)
>>> l1 = gimp.Layer(img, "test", 320,240)
>>> pdb.gimp_image_insert_layer(img,l1, grand_child_group,0)
Run Code Online (Sandbox Code Playgroud)
所以,确实存在这种极端的API不对称,在这种情况下,您通过父级的"add_layer"方法向图像添加图层和组,但是必须添加到图层组,您必须转到pdb.gimp_image_insert_layer呼叫.
更新 (2015年2月) - gimp.GroupLayer()的错误在GIMP的git中修复,它将从GIMP 2.8.16开始正常工作.现在,添加新组层的所有工作都是:
>>> g = gimp.GroupLayer(img)
>>> pdb.gimp_image_insert_layer(img, g, None, 0)
Run Code Online (Sandbox Code Playgroud)