我想用 python 获取 gimp 中的特定层。
我有两层图像。 我找到了命令
num_layers, layer_ids = pdb.gimp_image_get_layers(image)
当我运行命令时,我得到输出
num_layers = 2
layer_ids = (5, 4)
我找到了命令
layer = pdb.gimp_image_get_layer_by_name(image, name)
和 layer = pdb.gimp_image_get_layer_by_tattoo(image, tattoo)
。
如何获得特定图层?
如果您想确定脚本/插件应在哪一层上工作,则插件注册应声明以 PF_IMAGE 和 PF_DRAWABLE 开头的参数。当调用脚本时,这些将被设置为图像和活动层。
您还可以使用
image.active_layer
检索活动层,但这很危险,您的插件可能已在遮罩或通道上调用,通常使用以前的方法来执行此操作。在 Python-fu 控制台中尝试时,此方法有其用处。
如果您在脚本中创建了图层,则该图层已由 API 调用返回,因此请将其保留在变量中以便稍后重用。
对于特定层,这将取决于标准,您可以
按名称获取它:
pdb.gimp_image_get_layer_by_name(image, name)
。然而,该名称可能不是您所期望的(如果您创建一个名称已存在的图层,然后使用该名称来检索它,您将得到前一个)。
使用其在堆栈中的位置,特别是:
image.layers[0]
为顶部,image.layers[-1]
位于底部的“背景”。但是如果有图层组的话,事情当然会变得复杂。
您还可以找到第一个可见或链接的图层。 但这样做通常是一个坏主意。
如果您想从先前的处理中检索图层,您可以“纹身”它(
pdb.gimp_item_set_tattoo(item, tattoo)
,其中tattoo
是您选择作为签名的整数),然后使用pdb.gimp_image_get_layer_by_tattoo(image, tattoo)
在后续处理中检索它
)。纹身将作为图像的一部分保存,因此在工作结束后仍将保留。