12

给定的参数是两种颜色的 r,g,b。

我怎样才能将它们相乘?(就像混合模式 - >在Photoshop中相乘)

例子:

颜色1:0,255,255

颜色2:255,255,0

相乘:0,255,0

例子

4

4 回答 4

8

基于简单的乘法公式,这是一个适用于 RGB 的 javascript 函数:

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

使用现代 JavaScript:

const multiply = (rgb1, rgb2) => rgb1.map((c, i) => Math.floor(c * rgb2[i] / 255))

这是一个使用背景颜色的小提琴,您可以使用:http: //jsfiddle.net/unrLC/

在此处输入图像描述

于 2012-08-27T14:15:09.457 回答
6

这是乘以颜色的公式(以及其他混合模式公式)。

公式:结果颜色 =(顶部颜色)*(底部颜色)/255

您可以在 JavaScript 中非常轻松地实现这一点。

var newRed = red1 * red2 / 255;
var newGreen = green1 * green2 / 255;
var newBlue = blue1 * blue2 / 255;
于 2012-08-27T14:08:07.840 回答
3

您将颜色分量转换为 0 到 1 之间的值,然后是简单的乘法。将结果返回到 0 到 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
于 2012-08-27T14:07:39.250 回答
0

我想目的是将颜色范围从 0 到 255 相乘。将它们缩小到 [0, 1] 的范围,将它们相乘,然后再次扩展它们:

color_new = ( (color_1 / 255) * (color_2 / 255) ) * 255
color_new = color_1 * color_2 / 255
于 2012-08-27T14:08:46.030 回答