我有一个python-fu脚本,主要是工作。它扫描寻找颜色的图层,矩形选择该颜色的连续区域,复制该选区所覆盖的另一层图像部分,并将其保存到单独的文件中。一切都好。
现在必须清除矩形选择,以便不再将其作为其他组的一部分进行选择,并且扫描重新开始,以便它可以找到要保存的下一个连续矩形块。
不幸的是,我可以看到扫描遍历已被清除的区域,并且调试输出显示它仍然认为颜色在那里。尽管我可以看到该区域是透明的。所以,我必须错过一个告诉gimp更新的步骤。
我以为我有以下内容:
pdb.gimp_edit_clear(layer)
pdb.gimp_drawable_update(layer,0,0,width,height)
gimp_edit_clear
确实清除了我正在搜索的图层中的选择 - 我发现这种情况发生了 - 但是gimp_drawable_update
似乎没有做任何事情,因为当循环在现场进行时已被清除,它报告旧颜色仍在那里。
我错过了什么?
答案 0 :(得分:1)
问题不在于清楚,而在于我对它的作用的理解。我认为它擦除了将其恢复为原始透明区域(RGBA(0,0,0,0))的自然色的区域。当你要求新鲜透明层中像素的颜色时,这就是GIMP报告的内容。
'清除'实际上不会删除颜色,它只是将透明度设置为100%。因此,如果原始颜色是“完全可见的白色”RGBA(1,1,1,1),它只是将其变为“隐形白色”RGBA(1,1,1,0)。
我把RGBA(0,0,0,0)误解为“透明”,当它真的是“隐形黑”时。
所以,当我的扫描再次开始时,它仍然看到“白色”,尽管是“看不见的白色”。现在,我没有使用'clear',而是使用背景颜色填充,我故意将其设置为“隐形黑色”。