gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 11:08:38 26 4
gpt4 key购买 nike

如果您尝试在 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`

有没有人知道这个?

更新

by Joao S. O. Bueno

我刚刚在 gimp-git 中修复了这个问题。 Frgom gimp 2.8.12 上,
调用 gimp.GroupLayer 与gimp.GroupLayer(img, [name="", opacity=100.0, mode=gimp.NORMAL_MODE])签名。

最佳答案

在 gimp.GroupLayer 的创建中似乎存在一个错误 - 它表现为一个普通层,即使对象类型在 Python 中显示为一个组层。

不过,可以使用 pdb.gimp_layer_group_new(img) 通过 PDB 创建工作组层。 - 这一次,这是另一个错误,该对象在 Python 中显示为一个 nromal Layer 对象 - 但在将它插入到图像中之后 pdb.gimp_image_insert_layer(image, layer, <parent (use None for top level)>, <position>)它工作正常(通过图像“层”属性检索对象会给你适当的 GroupLayer 对象)。

很抱歉 - 大部分是我的错 - 我会看看我是否可以为下一个 GIMP 2.8 修复行为 - GIMP 2.8 几乎完全不支持来自 Python 的图层组。

更新:从 GIMP 2.8.12 开始,调用 gimp.GroupLayer(image, ...) 会创建一个合适的图层组。

关于python - Gimp 2.8 插件脚本 - 如何添加新的 GroupLayer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12608210/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com