Einzelnen Beitrag anzeigen

Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#20

Re: Ein Bild mit einer Farbe multiplizieren?

  Alt 24. Jan 2008, 12:34
Ich glaube, ihr kommt etwas vom Weg ab.
Für den gewünschten Effekt muss doch für die originale Farbe C1, die "Multiplikator-Farbe" C2 und den Mischfaktor f (alle in [0, 1]) einfach nur folgende Formel angewendet werden:
Code:
C1 * (1 - f) + C1 * C2 * f
Und dabei ist definitiv kein Clamping/Scaling/... nötig.
Hab das mal schnell in Paint.Net nachgestellt, es kommen exakt die beiden Photoshop-Bilder aus #14 heraus.
Code:
CurrentPixel = src[x,y];
byte f = PrimaryColor.A; // der Alphakanal der Primärfarbe wird als Faktor missbraucht
CurrentPixel.R = (byte)
 ((CurrentPixel.R * (255 - f) + CurrentPixel.R * PrimaryColor.R * f / 255) / 255);
CurrentPixel.G = (byte)
 ((CurrentPixel.G * (255 - f) + CurrentPixel.G * PrimaryColor.G * f / 255) / 255);
CurrentPixel.B = (byte)
 ((CurrentPixel.B * (255 - f) + CurrentPixel.B * PrimaryColor.B * f / 255) / 255);
dst[x,y] = CurrentPixel;
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat