2012-08-27 25 views
10

Die angegebenen Parameter sind r, g, b zweier Farben.Wie multipliziert man zwei Farben in Javascript?

Wie kann ich sie multiplizieren? (Wie mode- Mischen> multiplizieren in Photoshop)

Beispiel:

color1: 0.255.255

color2: 255,255,0

multipliziert: 0,255,0

example

+0

u haben für diese –

+0

Matrixmultiplikation verwenden Bitte zeigen Sie uns Ihren Code uns einen Eindruck von der Datenstruktur, die Sie mit kämpfen zu geben. Oder fragen Sie nach dem Multiplikationsoperator '*'? – Bergi

+0

Ich kenne die Methode dieses Effektes nicht. –

Antwort

5

Basierend auf die einfache Multiplikation Formel, hier ist eine Javascript-Funktion, die für RGB funktionieren sollte:

function multiply(rgb1, rgb2) { 
    var result = [], 
     i = 0; 
    for(; i < rgb1.length; i++) { 
     ​result.push(Math.floor(rgb1[i] * rgb2[i]/255)); 
    } 
    return result; 
}​ 

hier ist eine Geige Hintergrundfarben verwenden, können Sie spielen mit: http://jsfiddle.net/unrLC/

enter image description here

+6

frage nur ... warum die unorthodoxe Erklärung von "i"? – Ross

+1

Es ist ein Codierungsstil - alle am Kopf des Bereichs deklarierten Variablen. Vor ES6 'const' und' let' konnten Sie nur Variablen haben, die auf eine Funktion oder global beschränkt waren. Hochgezogene Deklarationen erlaubten die Referenzierung einer Variablen vor ihrer Initialisierung, und dieselbe Deklaration konnte mehrmals erfolgen. Insgesamt ergibt dies eine einfache Möglichkeit, Bugs einzuführen. Um diese Probleme zu beheben, haben sich viele Personen darauf beschränkt, alle Variablen zu deklarieren, die in einem Bereich als erste Anweisung in der Funktion angezeigt werden. – Semicolon

3

Sie übersetzen die Farbkomponenten in einen Wert zwischen 0 und 1, dann ist es eine einfache Multiplikation. Thanslate das Ergebnis zurück auf den Bereich 0 bis 255:

0, 255, 255 -> 0, 1, 1 
255, 255, 0 -> 1, 1, 0 

0*1 = 0, 1*1 = 1, 1*0 = 0 

0, 1, 0 -> 0, 255, 0 
5

Here's the formula for multiplying colors (sowie andere Mischmodus Formeln).

Formel: Ergebnis Farbe = (Top Farbe) * (Bottom Farbe)/255

Sie können dies in JavaScript sehr leicht implementieren.

var newRed = red1 * red2/255; 
var newGreen = green1 * green2/255; 
var newBlue = blue1 * blue2/255; 
0

Ich denke, das Ziel Farbe reicht von 0 bis 255. sie von einem Bereich zu multiplizieren ist Reduce [0, 1], multiplizieren sie, und erweitern sie wieder:

color_new = ((color_1/255) * (color_2/255)) * 255 
color_new = color_1 * color_2/255 
Verwandte Themen