Können Sie mit GIMP eine Farbe „löschen“?


9

Ich arbeite derzeit an einer iOS-Anwendung und versuche, das Standard-Warnungsdialogfenster zurückzuentwickeln. Ich habe es geschafft, herauszufinden, wie hoch der Alpha-Wert auf dem Hintergrund ist, der durch eine Farbabtastung gegen eine Vollschwarzansicht und eine Vollweißansicht verwendet wird.

Ist es angesichts dieser Informationen möglich, mit GIMP nur die Hintergrundfarbe zu "löschen", sodass nur der ursprüngliche, nicht gemischte Alarmhintergrund übrig bleibt?

Ich habe die Warnansicht nur in Bildform als Screenshot einer laufenden App.

Antworten:


8

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

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

  1. Öffnen Sie die Schwarz-Weiß-Hintergrundversionen als Ebenen desselben Bildes (verwenden Sie Als Ebenen öffnen ... oder öffnen Sie einfach beide und kopieren Sie sie und fügen Sie sie ineinander ein). Verschieben Sie die weiße Ebene über die schwarze Ebene, falls dies nicht bereits der Fall ist. Die beiden Schichten sollten ungefähr 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 in "Unterschied" und führen Sie sie zusammen. Invertieren Sie das Ergebnis. Dies gibt Ihnen den Alpha-Kanal 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 (in dem Modus, der den besten Kontrast bietet) und verwenden Sie dann Farben → Auto → Normalisieren , um den Hintergrund schwarz zu machen. Sie können stattdessen auch den Channel Mixer verwenden, dessen Verwendung jedoch etwas schwieriger ist.

    (Die obige Normalisierung funktioniert, wenn der von Ihnen neu erstellte Alphakanal mindestens einige Teile mit 100% Deckkraft aufweist. Wenn das neu erstellte Bild überall durchscheinend ist, können Sie stattdessen nur den Schwarzpunkt mit Farben → Ebenen ... einstellen. )

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

    • Wählen Sie die Originalversion mit dem dunkleren Hintergrund. Erstellen Sie eine neue Ebene darüber, die mit der Hintergrundfarbe gefüllt ist.
    • Klonen Sie die Differenzebene und invertieren Sie sie erneut, sodass sie einen weißen Hintergrund hat. Platzieren Sie diese Ebene über der neuen einfarbigen Ebene, die Sie gerade erstellt haben, stellen Sie den Ebenenmodus auf "Multiplizieren" und führen Sie sie zusammen.
    • Ändern Sie abschließend den Modus der resultierenden Ebene in "Subtrahieren" und führen Sie ihn mit dem Originalbild auf der Ebene zusammen. Dadurch sollte der ursprüngliche Hintergrund entfernt werden, sodass das Bild auf einem schwarzen Hintergrund angezeigt wird.
  3. Wenn wir ein Bildformat mit vormultipliziertem Alpha verwenden würden, wären wir jetzt mehr oder weniger fertig. Da dies jedoch nicht der Fall ist, müssen wir die RGB-Kanäle immer noch entmultiplizieren. Klonen Sie dazu die im vorherigen Schritt erstellte Alpha-Ebene (oder kopieren Sie sie einfach in die Zwischenablage), stellen Sie den Ebenenmodus auf "Teilen" ein und führen Sie sie mit der Ebene mit schwarzem Hintergrund zusammen, die Sie vor Schritt 2 geklont haben. Das Ergebnis sollte so aussehen (vergleiche mit der originalen Version mit schwarzem Hintergrund, um den Unterschied zu sehen):

    Entmultiplizierte 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 dem transparenten Originalbild ähneln. Um die Maske in einen richtigen Alphakanal zu verwandeln, können Sie sie anwenden (aber der PNG-Export von GIMP erledigt dies auch dann für Sie, wenn Sie dies nicht tun). Und los geht's - ein rekonstruiertes transparentes PNG ist einsatzbereit:

    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 etwas abweichen, können ähnliche Methoden möglicherweise noch verwendet werden. Möglicherweise müssen Sie jedoch 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 beliebiger Farbe funktionieren, sofern sie einfarbig sind.)


Ps. GIMP verfügt außerdem über eine Funktion zum Löschen von Farben (als Mischmodus für das Bucket Fill-Werkzeug oder als Farbe in Alpha ... für das gesamte Bild), die für die Rekonstruktion der Transparenz hilfreich ist, wenn Sie nur eine Version des Bildes haben auf einem einfarbigen Hintergrund. Wenn es jedoch nicht sorgfältig verwendet wird, besteht die Tendenz, dass es eine Ausgabe erzeugt, die transparenter ist, als Sie es wahrscheinlich möchten .

Pps. Wenn Sie das Original und die rekonstruierten Bilder sehr sorgfältig vergleichen, werden Sie feststellen, dass sie nicht genau identisch sind - einige Farbwerte sind um 1/256 oder so niedriger. Dies liegt daran, wie der "Divide" -Ebenenmodus von GIMP funktioniert: Anstatt die wahre Umkehrung der Alpha-Multiplikation zu berechnen, die Ausgabe = (255 × Eingabe ) / Ebene wäre , berechnet sie tatsächlich Ausgabe = (256 × Eingabe ) / ( Ebene)+ 1). Diese Nichtübereinstimmung, die angeblich durchgeführt wird, um eine Division durch Null zu vermeiden, bedeutet, dass einige der Farben auf einen etwas anderen Wert gerundet werden können, als sie sollten. Leider kenne ich keinen Weg daran vorbei, außer GIMP zu patchen, ein Plugin zu schreiben, um die Teilung so durchzuführen, wie wir es wollen, oder ein anderes Programm zu verwenden. Glücklicherweise ist der Farbunterschied für das menschliche Auge jedoch selten oder nie wahrnehmbar.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.