Gimp 2.8插件脚本 - 如何添加新的GroupLayer?

时间:2012-09-26 18:34:21

标签: python gimp

如果你试图用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]) 签名。

1 个答案:

答案 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,...)会创建一个合适的图层组。