如何在gimp中用python获取图层?

问题描述 投票:0回答:1

我想用 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)

如何获得特定图层?

python gimp
1个回答
2
投票
  • 如果您想确定脚本/插件应在哪一层上工作,则插件注册应声明以 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)在后续处理中检索它
    )。纹身将作为图像的一部分保存,因此在工作结束后仍将保留。

© www.soinside.com 2019 - 2024. All rights reserved.