如果你试图用gimp中的python做事并且难以弄清楚,PDB的文档/命名约定相当倒退。我最终找到了gimp.GroupLayer
(PDB列出gimp-layer-group-new
)来创建一个新的图层组。如何将其插入到图像中,并将其显示为图层组?
我一直在尝试这样的事情:
img = gimp.image_list()[0]
gl = gimp.GroupLayer(img, "Should be a folder", 1, 1, 0)
img.insert_layer(gl)
让我感到困惑的第一件事就是它希望我指定一个高度和高度。 GroupLayer的宽度,即使它只是作为其他实际图层的容器(它期望这是因为它继承自Layer
,但这是另一回事)。
真正的问题是,当我插入新创建的GroupLayer
时,它会显示为普通图层(图层图标中没有文件夹)。我通过制作两个图层来验证这一点,一个是普通图层,另一个是图层组。我将组图层添加到图像中,然后尝试将普通图层添加到图像中,并将组图层作为父图层:
img = gimp.image_list()[0]
gl = gimp.GroupLayer(img, "Group Layer", 1, 1, 0)
l = gimp.Layer(img, "Real Layer", 1, 1, 0)
img.insert_layer(gl)
img.insert_layer(l, gl) # gl should be the parent
我得到的只是错误:
Calling error for procedure 'gimp-image-insert-layer':
Item 'group layer #1' (34) cannot be used because it is not a group item`
还有其他人想出来了吗?
更新
作者:Joao S. O. Bueno
我刚刚在gimp-git中解决了这个问题。 Frgom gimp 2.8.12 on,
调用gimp.GroupLayer可以使用
gimp.GroupLayer(img, [name="", opacity=100.0, mode=gimp.NORMAL_MODE])
签名。
答案 0 :(得分:3)
似乎创建gimp.GroupLayer时存在一个错误 - 它表现为普通图层,即使Python中的对象类型显示为组图层。
可以通过PDB创建一个工作组层,但是,使用pdb.gimp_layer_group_new(img)
- 这次,tehre是另一个bug,该对象在Python中显示为一个nromal Layer对象 - 但是在插入之后用的图像
pdb.gimp_image_insert_layer(image, layer, <parent (use None for top level)>, <position>)
它正常工作(并通过图像检索对象&#34;图层&#34;属性会给你
一个合适的GroupLayer对象)。
很抱歉 - 大多数是我的错 - 我会看看我是否可以为下一个GIMP 2.8修复行为 - GIMP 2.8几乎不支持Python中的图层组。
更新:从GIMP 2.8.12开始,调用gimp.GroupLayer(image,...)会创建一个合适的图层组。