1

我有一个 python-fu 脚本,它大部分都在工作。它扫描图层以查找颜色,矩形选择该颜色的连续区域,将图像的部分复制到该选择所覆盖的另一个图层中,并将其保存到单独的文件中。都好。

现在必须清除矩形选择,这样它就不会作为其他集合的一部分再次被选中,并且扫描重新开始,以便它可以找到下一个要保存的连续矩形块。

不幸的是,我可以看到扫描遍历了已清除的区域,并且调试输出显示它仍然认为颜色在那里。尽管我可以看到该区域是透明的。所以,我一定错过了告诉 gimp 更新的步骤。

我以为我有以下几点:

pdb.gimp_edit_clear(layer)
pdb.gimp_drawable_update(layer,0,0,width,height)

gimp_edit_clear确实清除了我正在搜索的图层中的选择-我看到了这种情况-但gimp_drawable_update似乎没有做任何事情,因为当循环在已清除的位置上进行时,它报告旧颜色仍然存在.

我错过了什么?

4

1 回答 1

1

问题不在于清楚,而在于我对它所做的事情的理解。我认为它擦除了该区域,将其恢复为原始透明区域的自然颜色,即 RGBA(0,0,0,0)。当您询问新透明层中像素的颜色时,这就是 GIMP 报告的内容。

“清除”实际上并没有删除颜色,它只是将透明度设置为 100%。因此,如果原始颜色是“完全可见的白色”RGBA(1,1,1,1),它只会将其变成“不可见的白色”RGBA(1,1,1,0)。

我将 RGBA(0,0,0,0) 误解为“透明”,而它实际上是“不可见的黑色”。

所以,当我再次开始扫描时,它仍然看到“白色”,尽管是“看不见的白色”。现在,我没有使用“清除”,而是使用背景颜色进行填充,我故意将其设置为“不可见的黑色”。

于 2016-04-20T22:21:42.760 回答