Это ловушка ... pdb.gimp_image_get_vectors(image)
возвращает список целочисленных идентификаторов путей, но для более поздних вызовов требуется объект gimp.Vectors
.
image.vectors
действительно список gimp.Vectors
, и вы можете перебрать все пути с помощью
for vector in image.vectors:
Больше проблем:
- Вы объявляете два аргумента в register (), но их три в вашей функции. На практике вам не нужен аргумент пути, так как вы все равно собираетесь их итерировать.
- Аргументом слоя вашей функции является активный слой, когда вызывается плагин, и обычно это тот, который вы хотите нарисовать
gimp-edit-fill
принимает источник цвета, а не цвет. Когда вы пойдете дальше со своим кодом, вам нужно будет установить цвет переднего плана и нажать / выдвинуть контекст
CHANNEL-OP-REPLACE
не является допустимым символом Python, в Python вы должны использовать CHANNEL_OP_REPLACE
(с подчеркиванием)
Две коллекции сценариев Python здесь и там .
Если вы находитесь под Windows, некоторые подсказки для отладки ваших скриптов здесь
Ваш код с исправлениями:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from gimpfu import *
def plugin_main(image, layer):
for p in image.vectors:
pdb.gimp_image_select_item(image,CHANNEL_OP_REPLACE,p)
pdb.gimp_edit_fill(layer, FOREGROUND_FILL)
register(
"create_polygon_art",
"Fills all the paths with the average color within path",
"Fills all the paths with the average color within path",
"Bryton Pilling",
"Bryton Pilling",
"2018",
"<Image>/Test/Fill all paths with average color",
"RGB*, GRAY*",
[],
[],
plugin_main
)
main()
Вы можете сделать свой код более удобным для пользователя, рисуя «штрихи» (таким образом, у вас есть один путь с несколькими штрихами). Если вам нужны отдельные выделения для штрихов, вы можете скопировать их во временный путь. Код для этого можно найти в некоторых скриптах в коллекциях выше.