Дублированный слой GIMP в консоли script-fu

Как дублировать слой в консоли script-fu (scheme)?

Вот что я сделал до сих пор:

(gimp-image-list)

Это говорит мне, что ссылкой на мое изображение является число «1».

Затем я получаю ссылку на конкретный слой, который хочу дублировать:

(gimp-image-get-layer-by-name 1 "frame25")

Результат этого говорит мне, что ссылка на слой - это число «2».

Функций для дублирования слоя я не увидел, но вижу, что можно скопировать слой и потом вставить как новый слой.

(gimp-image-insert-layer 1 (car (gimp-layer-copy 2 TRUE)) 0 n)

Но какова ценность n? Я хочу вставить дубликат прямо над существующим слоем, так же, как при дублировании слоя в доке «Слои». Но мне не удалось найти ни одной функции, которая возвращает «позицию» (поскольку браузер процедуры script-fu вызывает 4-й параметр gimp-image-insert-layer) слоя в стеке. Например, ни одна из функций «gimp-layer-get-*», по-видимому, не относится к положению. Я пытался найти это в Интернете, но большинство людей используют «позицию» для обозначения смещения слоя, что совершенно не связано. (gimp-image-insert-layer 1 (gimp-layer-copy 2 TRUE) 0 n)


person Michael    schedule 05.05.2019    source источник


Ответы (2)


Вместо n поставить (car (gimp-image-get-item-position 1 2))

Или вообще:

(car (gimp-image-get-item-position IMG LAYER))

person Michael    schedule 05.05.2019

n — это позиция слоя в стеке слоев, 0 — вверху (поэтому для вставки внизу n — это текущее количество слоев).

Обратите внимание, что если вы пишете настоящий скрипт, изображение и слой могут быть автоматически переданы в качестве аргументов (когда в списке несколько изображений, трудно сказать, какое из них интересует пользователя, а в аргументах есть изображение). с которым взаимодействует пользователь).

Кроме того, если это ваш первый опыт написания сценариев Gimp, не забывайте, что вы можете писать сценарии на Python (что обычно намного проще).

person xenoid    schedule 05.05.2019