簡體   English   中英

如何在javascript中乘以兩種顏色?

[英]How to multiply two colors in javascript?

給定的參數是兩種顏色的r,g,b。

我怎樣才能將它們相乘? (像混合模式 - >在Photoshop中相乘)

例:

顏色1:0,255,255

COLOR2:255,255,0

乘:0,255,0

例

基於簡單的乘法公式,這里是一個適用於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/

在此輸入圖像描述

這是乘法顏色的公式 (以及其他混合模式公式)。

公式:結果顏色=(頂部顏色)*(底部顏色)/ 255

您可以在JavaScript中輕松實現此功能。

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

您將顏色分量轉換為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

我想目標是將顏色范圍從0增加到255.將它們減小到[0,1]的范圍,將它們相乘,然后再次展開它們:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM