Bild (Farbverlauf) im Bild durch Alpha "ersetzen".

Betrachten Sie die folgende Grafik:

Beispiel

Beachten Sie, dass der Hintergrund des ersten Bildes transparent ist und dass der blaue Hintergrund im zweiten und dritten Bild ein subtiler Farbverlauf ist und keine Volltonfarbe.

Geben Sie grundsätzlich das 2. Bild und das 3. Bild an. Wie kann ich den Unterschied zwischen den beiden finden, um (ungefähr) das 1. Bild zu erzeugen?

Ich bin offen für jede Art von Antwort, von "wie man es in %Program% macht" bis "Finde den Unterschied zwischen beiden RGB-Werten und multipliziere mit ..."

PS: Mir ist gerade aufgefallen, dass ich das erste Bild mit dem zweiten in der Grafik vertauscht habe. Offensichtlich beginnen Sie mit dem Farbverlauf und legen dann das Overlay darüber.

PS: GIMP hat eine Funktion namens "Farbe durch Alpha ersetzen", im Grunde macht es das, was ich brauche, aber es verwendet eine bestimmte Farbe. In meinem Fall würde die Farbe von der Position abhängen.

Ich denke, das könnte einfacher zu verstehen sein, wenn Sie den blauen Farbverlauf deutlicher machen würden?
Ich nehme auch an, dass das 1. Bild Alpha-Transparenz enthält?
@e100 Ja und ja. Eigentlich glaube ich, dass die ersten beiden Sätze die Situation gut erklärt haben?

Antworten (1)

Wenn Sie imagemagick installiert haben (wenn Sie dies nicht tun und auf einem Mac arbeiten, würde ich empfehlen, Homebrew zu verwenden ), gibt es einen supereinfachen Weg, der Sie nahe bringt ...

siehe diesen Artikel hier: https://legacy.imagemagick.org/Usage/compose/#changemask

Grundsätzlich können Sie diesen Befehl aus Ihren beiden Bildern aufrufen ...

convert original.png background.png -compose ChangeMask -composite result.png

wobei das Bild mit allem original.png ist, der blaue Verlaufshintergrund background.png ist und die Ausgabe (transparent) result.png ist (oder wie auch immer es genannt werden soll).

Geben Sie hier die Bildbeschreibung ein

Sie können das Ergebnis oben sehen ... es entfernt erfolgreich den Hintergrund, aber das Anti-Aliasing der Elemente ist immer noch etwas blau.

Vielleicht reicht dir das... wenn nicht, wird es schnell viel schwieriger.

Das Problem ist, dass es bei diesen Kantenpixeln nicht offensichtlich ist, um welche Farb-/Transparenzkombination es sich handelt.

Es gibt Techniken, die dabei helfen, über die Sie hier ausführlicher lesen können:

Aber es ist nicht trivial zu erreichen, soweit ich weiß.

Um ein wirklich gutes Ergebnis zu erzielen, haben Sie idealerweise zwei Versionen des Bildes auf verschiedenen Hintergründen (weiß & schwarz ist klassisch) und dann funktioniert diese Technik:

https://legacy.imagemagick.org/Usage/masking/#two_background

Wie auch immer, Daumen drücken, dass die erste Option für Ihre Bedürfnisse ausreichen könnte.

Vielen Dank für die (sehr) informative Antwort, sehr zu schätzen! Obwohl ich im Moment kein spezifisches Problem zu lösen habe, war ich neugierig, auf welche Weise es erreicht werden kann. Normalerweise mache ich so etwas manuell (zum Beispiel das manuelle Ersetzen von Blau in den Rändern).
Kein Problem! Der erste Ansatz wird Ihnen in diesem Fall definitiv ein wenig Zeit sparen, indem Sie die Hauptbereiche des Hintergrunds entfernen.
"Um ein wirklich gutes Ergebnis zu erzielen, haben Sie idealerweise zwei Versionen des Bildes auf unterschiedlichen Hintergründen" - sehr interessant. Wäre interessant, dies für ein physisches halbtransparentes Objekt auszuprobieren.