Как вы рисуете инсульт в Gimp с Python-fu?
Я использую Python-fu gimp.pdb.gimp_paintbrush_default(layer, 2, [10,10, 20,20]), но независимо от того, сколько штрихов я говорю, чтобы рисовать, он рисует только первый (x,y) (в данном случае (10,10)). Ожидается ли другой формат? Документация для функции не относится к плагину Python и просто говорит, что третий параметр ожидает переменную типа FLOATARRAY. Я предполагаю, что версия Python использует здесь список, но, похоже, он не ожидает каких-либо значений после первых двух. Как я могу заставить это нарисовать больше чем одну контрольную точку?
1 ответ
Второй передаваемый параметр - в этом случае "2" указывает GIMP длину списка в следующем параметре - хотя при кодировании в Python мы используем, чтобы у вызываемой функции не возникало проблем с поиском длины списка эти вызовы в сценариях GIMP Python являются отображением 1:1 в GIMP API для нескольких других языков и написаны на C.
В C нет способа узнать длину переданного массива, если только он не передан явно, поэтому существует потребность в этом параметре.
Попробуйте сделать это вместо этого:
points = [10,10, 20,20]
pdb.gimp_paintbrush_default(layer, len(points), points)