Js實現HSL RGB互轉

2021-10-01 07:30:53 字數 1583 閱讀 8377

rgb和hsl(也叫hsb/hsv)是兩種色彩空間,即:紅,綠,藍(red,green,blue)和色調,飽和度,亮度(hue,saturation,lightness或brightness或value),前者適用於機器取樣,目前的顯示器顏色即由這三種基色構成,而後者更符合人類的直觀感覺,比如人一般表達乙個顏色會這樣說:有點濃的暗紅色。而不會說紅色佔多少,綠色佔多少,藍色佔多少。

在windows的標準顏色對話方塊中均包含這兩種表示方法。rgb的取值範圍在0~255之間,hsl的取值在0~1之間,但windows系統處理成了0~240取值範圍,各種不同環境下的取值參照附表。另外還有cmy/cmyk顏色空間,常用於印刷行業,以後再將rgb-cmy-cmyk的轉換演算法貼出。  

/**

* * @param h 色相 [0,360)

* @param s 飽和度 [0,1]

* @param l 亮度 [0,1]

* @param stringmode 是否返回字串模式

*/function hsl2rgb(h = 0, s = 0, l = 0, stringmode = false) else if (h >= 60 && h < 120) else if (h >= 120 && h < 180) else if (h >= 180 && h < 240) else if (h >= 240 && h < 300) else if (h >= 300 && h < 360)

const [vr, vg, vb] = vrgb

const r = 255 * (vr + m)

const g = 255 * (vg + m)

const b = 255 * (vb + m)

if (stringmode) ,$,$)`

} return

}

/**

* @description rgb轉化為hsl

* @param r [0,255]

* @param g [0,255]

* @param b [0,255]

* @param stringmode 是否返回字串模式

*/function rgb2hsl(r = 0, g = 0, b = 0, stringmode = false) else if (cmax === _r) else if (cmax === _g) else if (cmax === _b)

h = math.floor(backcycle(h, 360));

const l = numberfixed((cmax + cmin) / 2);

const s = v === 0 ? 0 : numberfixed(v / (1 - math.abs(2 * l - 1)));

if (stringmode) ,$%,$%)`;

} return ;

}// utils

function backcycle(num, cycle)

return index;

}function numberfixed(num = 0, count = 3)

JS 實現blob與base64互轉

base64 to blob二進位制 function datauritoblob datauri return newblob intarray blob二進位制 to base64 function blobtodatauri blob,callback reader.readasdataurl...

js和json相互轉換

一 js物件轉換成為json 流程 讀取前端頁面資料,組裝成為js物件,並通過jquery的 post 方法傳遞給python。處理 引用乙個json2.js檔案,呼叫json.stringify 方法。例如 var data new object var json data json.string...

js 時間戳和日期互轉

獲取當前時間戳 以s為單位 var timestamp date.parse new date timestamp timestamp 1000 當前時間戳為 1403149534 console.log 當前時間戳為 timestamp 獲取某個時間格式的時間戳 var stringtime 20...