Как замаскировать слой из канала в GIMP с помощью Python?

Я 3 дня искал документацию о python-fu для GIMP 2.8, и тот, который я нашел, отличный, но устарел.

Итак, я застрял на этом месте: я создал 3 цветовых канала и хочу добавить каждый из них в качестве маски к каждому из 3 слоев.

Что я сделал до сих пор: (вручную загрузил изображение и создал 3 цветовых канала для света, средних тонов и теней);

Получите его идентификатор с помощью:

ima = gimp.image_list()[0]

Получите идентификатор слоя и продублируйте слой 3 раза:

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

Теперь у меня есть изображение с тремя слоями, и я хочу добавить маску слоя к каждому из трех слоев, но из трех разных цветовых каналов... но я не знаю, как это сделать.

Ответы (1)

API, похоже, не поддерживает создание маски непосредственно из случайного канала. Но вы можете создать маску из выделения, поэтому:

  1. Скопируйте свой канал в подборку

    pdb.gimp_image_select_item(image,CHANNEL_OP_REPLACE,channel)
    
  2. Создайте маску

    mask=layer.create_mask(ADD_SELECTION_MASK)
    
  3. Добавьте маску к слою:

    layer.add_mask(mask)
    
Конечно, но тут вопрос в том, чтобы создать слой-маску, а не слой.