2016-04-20 85 views
1

我有一個python-fu腳本,主要工作。它掃描要查找顏色的圖層,矩形選擇該顏色的連續區域,將圖像的該部分複製到該選區覆蓋的另一圖層中,並將其保存到單獨的文件中。都好。爲什麼「清除」不起作用?

現在矩形選擇必須被清除,以便它不會再被選作其他設置的一部分,掃描重新開始,以便它可以找到下一個連續的矩形塊來保存。

不幸的是,我可以看到掃描遍歷已被清除的區域,並且調試輸出顯示它仍然認爲顏色在那裏。儘管我可以看到這個地區是透明的。所以,我必須錯過一個告訴gimp更新的步驟。

我想我了吧以下內容:

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

gimp_edit_clear並清除我在尋找層的選擇 - 我看到這種情況發生 - 但gimp_drawable_update似乎並沒有做任何事情,因爲當循環在已被清除的點上前進時,它報告舊顏色仍然存在。

我缺少什麼?

回答

1

問題不在於清楚,而在於我對它做了什麼的理解。我認爲它擦除了該區域,將其恢復爲原始透明區域的自然色,即RGBA(0,0,0,0)。這就是GIMP在要求新透明圖層中的像素顏色時所報告的內容。

'清除'實際上並沒有去除顏色,它只是將透明度設置爲100%。所以如果原始顏色是「完全可見的白色」RGBA(1,1,1,1),它只是將其變成「不可見的白色」RGBA(1,1,1,0)。

我誤解了RGBA(0,0,0,0)爲「透明」,當它真的是「看不見的黑色」。

因此,當我的掃描再次開始時,它仍然看到'白色',雖然'看不見的白色'。現在,我沒有使用「清晰」,而是填充背景顏色,我故意將其設置爲「隱形黑色」。