Wie maskiere ich eine Ebene aus einem Kanal in GIMP mit Python?

Ich habe 3 Tage lang nach Dokumentation zu python-fu für GIMP 2.8 gesucht, und die, die ich finde, ist großartig, aber veraltet.

Also stecke ich jetzt an dieser Stelle fest: Ich habe 3 Farbkanäle erstellt und möchte jeden von ihnen als Maske zu jeder der 3 Ebenen hinzufügen.

Was ich bisher gemacht habe: (Bild manuell laden und 3 Farbkanäle für Lichter, Mitteltöne und Schatten erstellen);

Holen Sie sich seine ID, mit:

ima = gimp.image_list()[0]

Holen Sie sich die Ebenen-ID und duplizieren Sie die Ebene dreimal:

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

Jetzt habe ich ein Bild mit drei Ebenen und möchte jeder der 3 Ebenen eine Ebenenmaske hinzufügen, aber aus den 3 verschiedenen Farbkanälen ... aber ich weiß nicht wie.

Antworten (1)

Die API scheint das Erstellen einer Maske direkt aus einem zufälligen Kanal nicht zu unterstützen. Aber Sie können eine Maske aus der Auswahl erstellen, also:

  1. Kopieren Sie Ihren Kanal in die Auswahl

    pdb.gimp_image_select_item(image,CHANNEL_OP_REPLACE,channel)
    
  2. Erstellen Sie die Maske

    mask=layer.create_mask(ADD_SELECTION_MASK)
    
  3. Fügen Sie die Maske der Ebene hinzu:

    layer.add_mask(mask)
    
Natürlich, aber hier geht es darum, eine Ebenenmaske zu erstellen, keine Ebene.