2016-04-20 14 views
1

Ich habe ein Python-Fu-Skript, das meistens funktioniert. Er scannt eine Ebene nach einer Farbe, rechteckig selektiert zusammenhängende Bereiche dieser Farbe, kopiert den Teil des Bildes in einer anderen Ebene, die von dieser Auswahl abgedeckt wird, und speichert sie in einer separaten Datei. Alles gut.Warum funktioniert das "Clear" nicht?

Nun muss die rechteckige Auswahl gelöscht werden, so dass sie nicht erneut als Teil eines anderen Satzes ausgewählt wird, und der Scan beginnt neu, so dass der nächste zusammenhängende rechteckige Block zum Speichern gefunden werden kann.

Leider kann ich den Scan durchqueren den Bereich, der gelöscht wurde, und die Debug-Ausgabe zeigt, dass es immer noch denkt, dass die Farbe dort ist. Trotz der Tatsache, dass ich sehen kann, ist das Gebiet transparent. Also muss ich einen Schritt vermissen, der Gimp sagt, dass er updaten soll.

Ich dachte, ich hätte es mit dem folgenden:

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

gimp_edit_clear die Auswahl nicht klar in der Schicht Ich suche - ich sehe, dass passieren - aber die gimp_drawable_update scheint nichts zu tun , denn wenn die Schleife über den Punkt hinausgeht, der gelöscht wurde, meldet sie, dass die alte Farbe noch vorhanden ist.

Was fehlt mir?

Antwort

1

Das Problem war nicht mit dem klaren, aber mit meinem Verständnis, was es getan hat. Ich dachte, dass es den Bereich löschte, der es zu der natürlichen Farbe eines ursprünglich transparenten Bereichs zurückbringt, der RGBA (0,0,0,0) ist. Das ist, was GIMP meldet, wenn Sie nach der Farbe eines Pixels in einer frischen transparenten Schicht fragen.

'Löschen' entfernt nicht die Farbe, sondern setzt die Transparenz auf 100%. Wenn also die ursprüngliche Farbe "vollständig sichtbares Weiß" RGBA (1,1,1,1) war, wird sie einfach in "unsichtbares Weiß" RGBA (1,1,1,0) umgewandelt.

Ich hatte RGBA (0,0,0,0) als "transparent" missverstanden, wenn es wirklich "unsichtbar schwarz" ist.

Also, als mein Scan erneut gestartet wurde, sah es immer noch 'weiß', wenn auch 'unsichtbares Weiß'. Anstatt "klar" zu verwenden, fülle ich jetzt mit der Hintergrundfarbe, die ich bewusst auf "unsichtbares Schwarz" gesetzt habe.

Verwandte Themen