Farben berechnen bei Transparenz
Der Hans
- grafik
Moin!
Ich suche nach einem Weg, eine Farbe X zu berechnen, die bei Y% Transparenz eine bereits
feststehende Farbe Z annimmt.
Vor einer Weile gab es schon eimal einen Thread zu diesem Thema, den ich damals noch
eher oberflächlich las. Unter anderem mit einer Lösung von Sven
--> http://forum.de.selfhtml.org/archiv/2003/8/55227/#m307748
Nun bin ich leider kein Grafiker und kann mit dieser Erklärung genau gar nichts anfangen.
Hat jemand einen Link oder kann mir (für Laien) erklären, wie man _Farbwerte_ subtrahiert?
Gruß
Der Hans
Hallo,
Ich suche nach einem Weg, eine Farbe X zu berechnen, die bei Y% Transparenz eine bereits
feststehende Farbe Z annimmt.
--> http://forum.de.selfhtml.org/archiv/2003/8/55227/#m307748
Hat jemand einen Link oder kann mir (für Laien) erklären, wie man _Farbwerte_ subtrahiert?
Ganz normal, wie Zahlen. Eine Farbe in RGB (Rot, Grün, Blau) Schreibweise setzt sich bei 24 Bit Farbtiefe aus 8 Bit für jeden Kanal zusammen.
Mit 8 Bit / Kanal gibt es also für den Rot, den Grün und den Blau Wert jeweils 256 verschiedene Möglichkeiten. Diese kann man entweder als Zahlen von 0 bis 255 sehen, oder eben in Hexadezimalschreibweise als Zahlen von 00 bis FF.
Wenn du Probleme mit Hex-Zahlen hast, dann kann dir sogar der in Windows eingebaute Rechner beim Konvertieren helfen. Du musst ihn nur in den Wissenschaftlichen Modus stellen.
Das Rechnen machen wir jetzt mal mit "normalen" Zahlen im Zehnersystem.
Angenommen du hast zwei Farben 1 und 2, diese haben folgende Werte:
r1 = 100, g1 = 200, b1 = 200 (#64C8C8)
r2 = 120, g2 = 120, b2 = 240 (#7878F0)
Du möchtest nun r2 mit 10% Transparenz auf r1 auftragen. Da r2 zu 10% durschschimmert ist es also nur noch zu 90% sichtbar. Die transparenten 10% macht r1 aus.
Deine Ergebnisfarbe ist also:
r = 0,1 * r1 + 0,9 * r2 = 118 \
g = 0,1 * g1 + 0,9 * g2 = 128 => #7680EC
b = 0,1 * b1 + 0,9 * b2 = 236 /
Wenn du nun deine Farben gegeben hast und den Transparenzwert suchst, dann gehst du folgendermaßen vor:
Hintergrundfarbe: h
Vordergrundfarbe: v
Transparenz: t (Bei t = 0,25 wären es 25% Tranzparenz)
Ergebnisfarbe: e
e = t * h + (1 - t) * v
e = th + v - tv
e - v = th - tv
e - v = t(h - v)
e - v Dies muss allerdings für alle Kanäle gelten,
t = ------- da diese ja in der Regel alle mit der selben
h - v Transparenz berechnet werden.
Ich hoffe, das war jetzt verständlich.
Viele Grüße,
Stefan
hallo Stefan
ich bin total perplext super erklärung!! und auch noch recht einfach
kannst du auch erklären wie das mit transparenten Bildern geht?
welche Hintergrundfarbe nimmst du den dann an?
besten dank
bis bis roman
Hallo,
ich bin total perplext super erklärung!! und auch noch recht einfach
Danke für das Lob.
kannst du auch erklären wie das mit transparenten Bildern geht?
welche Hintergrundfarbe nimmst du den dann an?
Die die hintendran ist eben. Wenn du ein Bild transparent über ein anderes legen willst, dann wird das Pixel für Pixel so berechnet, wie ich es oben beschrieben habe. Jedem Pixel des Vordergrundbildes entspricht ja genau eines des Hintergrundbildes.
Viele Grüße,
Stefan