Скопируйте слой с изображения на другой - PullRequest
2 голосов
/ 29 ноября 2011

Я создаю плагин Gimp в Python.Я хотел бы загрузить слой в память, основанный на файле, и затем добавить его к нескольким изображениям (таким образом, избегая времени загрузки из файла).

Я не смог найти ничего в документации для этого:вся функция добавляет слои в определенное изображение (поэтому мне придется каждый раз загружать из файла, чего я и пытаюсь избежать).

Есть ли обходной путь для этого?Я думал о том, чтобы загрузить слой в «шаблон изображения», а затем скопировать его в другие изображения.Проблема в том, что я не смог найти функцию для копирования слоев из одного изображения в другое.

1 Ответ

2 голосов
/ 29 ноября 2011

Я думаю, что самый простой способ - использовать «копирование» и «вставку» через PDB -

pdb.gimp_edit_copy (original_layer)

floating = pdb.gimp_edit_paste (target_layer)

(где целевой слой - это слой на другом изображении).

Это создает, как и в интерактивном режиме, «плавающее выделение».Чтобы плавающее выделение перезаписало содержимое целевого слоя, выполните:

pdb.gimp_floating_sel_anchor(float)

или переместите его на новый слой с вставленным содержимым:

pdb.gimp_floating_sel_to_layer(float)

В качестве дополнительной заметки- sinc GIMP 2.6, есть ярлык для создания новых слоев на изображениях, которые AFAIK не документированы вне исходного кода - метод new_layer для объектов изображений.

При вызове без параметров он создает новый прозрачныйслой того же размера, что и изображение.Этот ярлык довольно удобен, потому что «pdb-способ» создания слоев - это создание его с помощью множества обязательных параметров, а затем еще один вызов для добавления его в изображение.

...