为什么 'clear' 不起作用?

Why is the 'clear' not working?

我有一个 python-fu 脚本,大部分时间都可以使用。它扫描一层寻找颜色,矩形 selects 该颜色的连续区域,复制另一层中被该 select 离子覆盖的图像部分,并将其保存到单独的文件中。一切顺利。

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

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

我以为我有以下内容:

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

gimp_edit_clear 确实清除了我正在搜索的图层中的 selection -- 我看到了这种情况 -- 但 gimp_drawable_update 似乎什么也没做,因为当循环在已清除的点上进行时,它报告旧颜色仍然存在。

我错过了什么?

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

'Clear' 实际上并没有移除颜色,它只是将透明度设置为 100%。所以如果原来的颜色是 "fully visible white" RGBA(1,1,1,1),它只是把它变成 "invisible white" RGBA(1,1,1,0).

我误以为 RGBA(0,0,0,0) 是 "transparent",而实际上是 "invisible black"。

所以,当我再次开始扫描时,它仍然看到 'white',尽管是 'invisible white'。现在,我没有使用 'clear',而是使用背景颜色进行填充,我特意将其设置为 "invisible black".