2012-08-27 12 views
10

Los parámetros dados son r, g, b de dos colores.¿Cómo se multiplican dos colores en javascript?

¿Cómo puedo multiplicarlos? (Como la mezcla de mode-> multiplicarse en Photoshop)

Ejemplo:

color1: 0255255

color2: 255,255,0

multiplicado: 0,255,0

example

+0

u tiene que utilizar la multiplicación de matrices para que –

+0

Favor mostrar su código para darnos una idea de la estructura de datos que lucha con. ¿O pides el operador de multiplicación '*'? – Bergi

+0

No conozco el método de este efecto. –

Respuesta

5

Basado en la sencilla fórmula se multiplican, aquí es una función javascript que deben trabajar para RGB:

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

aquí es un violín usando colores de fondo se puede jugar con: http://jsfiddle.net/unrLC/

enter image description here

+6

preguntando ... ¿por qué la declaración poco ortodoxa de 'i'? – Ross

+1

Es un estilo de codificación: todas las variables declaradas a la cabeza del alcance. Antes de ES6 'const' y' let', solo se podían tener variables con alcance en una función o global, las declaraciones izadas permitían hacer referencia a una variable antes de que se inicializara, y la misma declaración se podía hacer varias veces. En general, esto se suma a una forma fácil de introducir errores. Para abordar estos problemas, muchas personas eligen restringirse a declarar todas las variables que aparecerían en un ámbito como la primera declaración en la función. – Semicolon

3

Usted traduce los componentes de color a un valor entre 0 y 1, luego es una simple multiplicación. Thanslate el resultado de nuevo a la gama de 0 a 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 (así como otras fórmulas modo de mezcla).

fórmula: Resultado = color (Color superior) * (color de fondo)/255

Puede implementar esta muy fácilmente en JavaScript.

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

supongo que el objetivo es multiplicar rangos de color de 0 a 255. reducirlos a una gama de [0, 1], los multiplicaré, y expandir de nuevo:

color_new = ((color_1/255) * (color_2/255)) * 255 
color_new = color_1 * color_2/255 
Cuestiones relacionadas