¿Cómo enmascarar una capa de un canal en GIMP con Python?

Llevo 3 días buscando documentación sobre python-fu para GIMP 2.8, y la que encuentro es excelente, pero obsoleta.

Así que ahora estoy atascado en este lugar: he creado 3 canales de color y quiero agregar cada uno de ellos como una máscara a cada una de las 3 capas.

Lo que he hecho hasta ahora: (cargar manualmente la imagen y crear 3 canales de color para luces, medios tonos y sombras);

Obtenga su identificación, con:

ima = gimp.image_list()[0]

Obtenga la ID de capa y duplique la capa 3 veces:

layn = pdb.gimp_layer_new_from_visible(ima, ima, 'dup')
pdb.gimp_image_insert_layer(ima, layn, None, -1) 

Ahora tengo una imagen con tres capas y quiero agregar una máscara de capa a cada una de las 3 capas pero desde los 3 canales de color diferentes... pero no sé cómo.

Respuestas (1)

La API no parece admitir la creación de una máscara directamente desde un canal aleatorio. Pero puede crear una máscara a partir de la selección, así que:

  1. Copie su canal en la selección

    pdb.gimp_image_select_item(image,CHANNEL_OP_REPLACE,channel)
    
  2. Crea la máscara

    mask=layer.create_mask(ADD_SELECTION_MASK)
    
  3. Agregue la máscara a la capa:

    layer.add_mask(mask)
    
Por supuesto, pero aquí la cuestión es crear una máscara de capa, no una capa.