Как определить последнее выбранное изображение в gimp из (схема функции) gimp-image-list?

Как определить последнее выбранное изображение в gimp из gimp-image-list?

gimp-image-list возвращает список с количеством изображений в качестве первого элемента и вектором идентификаторов изображений в качестве второго элемента.

Если существует более одного изображения, как можно найти последнее сфокусированное изображение?

2 ответа

Решение

Вы не Порядок в списке - это обратный порядок, в котором изображения были открыты - обычно это обратные порядки на вкладках изображений.

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

В интерактивном режиме, т.е. вне сценария, вы просто проверяете идентификатор изображения в строке заголовка.

Вам необходимо определить изображение и область рисования при регистрации скрипта. Например:

      (script-fu-register "script-fu-some-handy-function"
_"_Handy function..."
_"Does something handy for your image."
"Michael T <username@domain.com>"
"Michael T"
"24/09/2022"
"*"
SF-IMAGE       "Input image" 0
SF-DRAWABLE    "Input drawable" 0
)

Затем, когда вам нужно использовать изображение, вы просто наберете «изображение», чтобы использовать изображение, на которое указывает ссылка.

      (define (script-fu-some-handy-function image drawable)

    (define width (car(gimp-image-width image)))
    (define height (car(gimp-image-height image)))  

    (define newLayer (gimp-layer-new image width height 1 "Black" 100 0))
    (define newLayerIndex (car newLayer))
    (gimp-image-insert-layer image newLayerIndex 0 0)
    (gimp-context-set-foreground '(0 0 0))
)

Обратите внимание, как мы определяем переменную в определении функции, иначе эта переменная не будет работать в определении.

Другие вопросы по тегам