Können Sie mit GIMP eine Farbe "löschen"?

Ich arbeite derzeit an einer iOS-Anwendung und versuche, ihr Standard-Alarmdialogfenster zurückzuentwickeln. Ich habe es geschafft, herauszufinden, was der Alpha-Wert des verwendeten Hintergrunds ist, indem ich einige Farbabtastungen gegen eine durchgehend schwarze Ansicht und eine durchgehend weiße Ansicht durchgeführt habe.

Ist es angesichts dieser Informationen mit GIMP möglich, die Hintergrundfarbe einfach zu "löschen", sodass ich nur noch den ursprünglichen, nicht gemischten Alarmhintergrund habe?

Ich habe nur die Alert-Ansicht in Bildform als Screenshot aus einer laufenden App.

Antworten (1)

Ja es ist möglich. Lassen Sie mich skizzieren, wie es gemacht wird, indem ich dieses Bild von Wikimedia Commons (von ed_g2s , lizenziert als CC-By-SA 3.0 ) als Beispiel verwende:

PNG-Transparenz-Demonstrationsbild von ed_g2s, lizenziert als CC-By-SA 3.0

  1. Öffnen Sie die schwarzen und weißen Hintergrundversionen als Ebenen desselben Bildes (mithilfe von Als Ebenen öffnen ... oder öffnen Sie einfach beide und kopieren Sie sie und fügen Sie sie in die andere ein). Bewegen Sie die weiße Ebene über die schwarze Ebene, falls dies nicht bereits der Fall ist. Die beiden Schichten sollten in etwa so aussehen:

    Demonstrationsbild mit schwarzem Hintergrund Demonstrationsbild mit weißem Hintergrund

  2. Nehmen Sie den Unterschied der Ebenen: Klonen Sie die schwarze Ebene (Sie werden sie später benötigen), ändern Sie den Ebenenmodus der weißen Ebene auf "Unterschied" und führen Sie sie zusammen. Invertieren Sie das Ergebnis. Dadurch erhalten Sie den Alphakanal des Originalbildes.

    Rekonstruierter Alphakanal

    Bearbeiten: Wenn Ihre Hintergründe nicht schwarzweiß sind, hat die invertierte Differenzebene keinen schwarzen Hintergrund. Um dies zu beheben, entsättigen Sie zuerst die Ebene (verwenden Sie den Modus, der Ihnen den besten Kontrast bietet) und verwenden Sie dann Farben → Auto → Normalisieren, um den Hintergrund schwarz zu machen. Sie könnten stattdessen auch den Channel Mixer verwenden , aber es ist ein wenig komplizierter zu bedienen.

    ( Normalisieren oben funktioniert, wenn der Alphakanal, den Sie neu erstellen, mindestens einige Teile mit 100 % Deckkraft aufweist; wenn das Bild, das Sie neu erstellen, überall durchscheinend ist, können Sie Farben → Ebenen verwenden, um stattdessen nur den Schwarzpunkt festzulegen. )

    Wenn Sie noch keines haben, müssen Sie für den nächsten Schritt auch eine Version Ihres Bildes mit schwarzem Hintergrund erstellen. Verwenden Sie dazu die folgenden zusätzlichen Schritte:

    • Wählen Sie die Originalversion mit dem dunkleren Hintergrund. Erstellen Sie darüber eine neue Ebene, die mit der Hintergrundfarbe gefüllt ist.
    • Klonen Sie die Differenzebene und invertieren Sie sie erneut, sodass sie einen weißen Hintergrund hat. Legen Sie diese Ebene auf die gerade erstellte neue einfarbige Ebene, stellen Sie den Ebenenmodus auf "Multiplizieren" und führen Sie sie nach unten zusammen.
    • Ändern Sie schließlich den Modus der resultierenden Ebene in "Subtrahieren" und führen Sie sie mit dem Originalbild auf der Ebene zusammen. Dadurch sollte der ursprüngliche Hintergrund entfernt werden, sodass Sie das Bild auf einem schwarzen Hintergrund haben.
  3. Wenn wir ein Bildformat mit vormultipliziertem Alpha verwenden würden, wären wir jetzt mehr oder weniger fertig. Aber da wir es nicht sind, müssen wir die RGB-Kanäle noch demultiplizieren. Klonen Sie dazu die Alpha-Ebene, die wir im vorherigen Schritt erstellt haben (oder kopieren Sie sie einfach in die Zwischenablage), stellen Sie ihren Ebenenmodus auf „Teilen“ und führen Sie sie mit der Ebene mit schwarzem Hintergrund zusammen, die Sie vor Schritt 2 geklont haben. Das Ergebnis sollte so aussehen (vergleichen Sie mit der ursprünglichen Version mit schwarzem Hintergrund, um den Unterschied zu sehen):

    Demultiplizierte RGB-Kanäle

  4. Fügen Sie nun der resultierenden Ebene eine Ebenenmaske hinzu, wählen Sie die Maske aus und fügen Sie die Alpha-Ebene ein. Das Ergebnis sollte nun mehr oder weniger wie das ursprüngliche transparente Bild aussehen. Um die Maske schließlich in einen richtigen Alphakanal umzuwandeln, können Sie sie anwenden (aber der PNG-Export von GIMP erledigt dies für Sie, auch wenn Sie dies nicht tun). Und los geht's – ein rekonstruiertes transparentes PNG, das sofort einsatzbereit ist:

    Rekonstruiertes Bild mit Transparenz

Natürlich erfordert diese Technik wirklich, dass Sie Versionen des Bildes auf rein schwarzem und rein weißem Hintergrund haben. Wenn die Hintergründe ein wenig abweichen, können ähnliche Methoden immer noch verwendet werden, aber Sie müssen möglicherweise zusätzliche Farbanpassungen vornehmen und die Ergebnisse sind möglicherweise nicht so perfekt. ( Bearbeiten: Siehe Ergänzungen zu Schritt 2 oben. Die geänderten Anweisungen sollten mit Hintergründen jeder Farbe funktionieren, solange es sich um Volltonfarben handelt.)


PS. GIMP hat auch eine "Color Erase"-Funktion (als Mischmodus für das Bucket Fill-Tool oder als Color to Alpha ... für das gesamte Bild), die nützlich ist, um Transparenz zu rekonstruieren , wenn Sie nur eine Version des Bildes haben auf einem einfarbigen Hintergrund. Wenn es jedoch nicht sorgfältig verwendet wird, neigt es dazu, eine Ausgabe zu erzeugen, die etwas transparenter ist, als Sie es wahrscheinlich möchten .

Pps. Wenn Sie das Originalbild und das rekonstruierte Bild sehr genau vergleichen, werden Sie feststellen, dass sie nicht genau identisch sind – einige Farbwerte weichen um etwa 1/256 ab. Das liegt daran, wie der "Divide"-Layer-Modus von GIMP funktioniert: Anstatt die wahre Umkehrung der Alpha-Multiplikation zu berechnen, die ausgegeben werden würde = (255 × input ) / layer , berechnet es tatsächlich output = (256 × input ) / ( layer+ 1). Diese Diskrepanz, die angeblich vorgenommen wird, um eine Division durch Null zu vermeiden, bedeutet, dass einige der Farben möglicherweise auf einen etwas anderen Wert gerundet werden, als sie sollten. Leider kenne ich keinen anderen Weg, als GIMP zu patchen, ein Plugin zu schreiben, um die Division so zu machen, wie wir es wollen, oder ein anderes Programm zu verwenden. Glücklicherweise ist der Farbunterschied jedoch selten, wenn überhaupt, vom menschlichen Auge wahrnehmbar.