Gimp: Как создать выделение из файла в Python

Я использую неинтерактивный режим Gimp, так как хочу обработать большое количество изображений и их масок. Для каждого файла изображения у меня есть файл изображения маски, который состоит из 1 и 0 (1 означает, что пиксель должен быть выбран). Как мне выбрать их в Python? Я смотрю на ссылку здесь . Я вижу, что есть функция с именем gimp_selection_load, которая загружает выделение из канала. Однако я не знаю, как преобразовать изображение маски в канал. Я попытался прочитать его с помощью , gimp_file_loadа затем gimp_image_get_channels, но в изображении маски не найдены каналы. Что я делаю не так?

Ответы (1)

Самый простой способ — загрузить свою маску как новый слой, сделать из нее выделение цвета, а затем удалить ее. Предположим, что imageэто ваше текущее изображение:

import gimpcolor

# load mask as layer
mask=pdb.gimp_file_load_layer(image,'/path/to/mask.png')
pdb.gimp_image_add_layer(image, mask,0)

# get selection
pdb.gimp_image_select_color(image, CHANNEL_OP_REPLACE, mask,gimpcolor.RGB(0,0,0))

# drop the mask layer
pdb.gimp_image_remove_layer(image,mask)
"скопировать слой в канал исходного изображения" как мне это сделать? Какую функцию следует использовать?
Копия канала сложнее, чем кажется. См. отредактированный ответ для более простого решения. Если вы делаете пакетные скрипты, некоторые подсказки и пример кода здесь .
Фантастика. Я довольно долго с этим боролся, и оказалось, что моя главная ошибка в том, что я забыл удалить слой! Очень хорошо, что вы добавили фрагмент.