Der Hans: Farben berechnen bei Transparenz

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

  1. 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

    --
    Lass dir das Tanzen NICHT verbieten
    http://tanzverbot.de
    1. 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

      1. 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

        --
        Lass dir das Tanzen NICHT verbieten
        http://tanzverbot.de