Gimp python-fu如何选择多边形?

时间:2016-09-22 14:01:31

标签: selection gimp python-fu

问题

我需要在图像上进行数百次多边形选择。为了帮助,我一直在尝试使用python控制台创建一个脚本,它将以计算的方式(相同大小的区域,数百个不同的起点)执行此操作。我在Windows 10机器上使用GIMP 2.8.18。

问题是函数pdb.gimp_image_select_polygon似乎没有起作用。

代码

以下是我在python控制台中尝试做的事情:



    theImage = gimp.image_list()[0]
    OP_ADD = 0
    POINT_COUNT = 5
    x = 0
    y = 0
    points = [0.0 for i in range(0,10)]
    points[0] = 64.0 + (128.0 * x)
    points[1] = 64.0 * y
    points[2] = 128.0 * x
    points[3] = 32.0 + (64.0 * y)
    points[4] = 64.0 + (128.0 * x)
    points[5] = 64.0 + (64.0 * y)
    points[6] = 128.0 + (128.0 * x)
    points[7] = 32.0 + (64.0 * y)
    points[8] = 64.0 + (128.0 * x)
    points[9] = 64.0 * y
    pdb.gimp_image_select_polygon(theImage, OP_ADD, POINT_COUNT, points)

运行时,没有发生。 OTOH,如果我使用另一个选择功能,我会得到一个选择:



    pdb.gimp_image_select_rectangle(theImage, 0, 64 ,0 ,128 ,32)

我使用gimp_image_select_polygon没有得到回溯错误,所以我知道我有正确数量的参数和正确的参数类型。我尝试过各种各样的东西,无法在网上找到太多帮助。

有没有人看到我的代码有问题,或者GIMP中的python引擎完全不感兴趣?

1 个答案:

答案 0 :(得分:2)

长度参数是坐标数,而不是点数(通常是双数)

OP_REPLACE未在我的版本中定义。

对于(100,100)的100x100平方:

p=[100,100,100,200,200,200,200,100]
pdb.gimp_image_select_polygon(image, CHANNEL_OP_REPLACE,len(p),p)