19 lines
522 B
JavaScript
19 lines
522 B
JavaScript
// Calculates 16-bit precision HSL lightness from 8-bit rgba buffer
|
|
//
|
|
'use strict';
|
|
|
|
|
|
module.exports = function hsl_l16_js(img, width, height) {
|
|
var size = width * height;
|
|
var out = new Uint16Array(size);
|
|
var r, g, b, min, max;
|
|
for (var i = 0; i < size; i++) {
|
|
r = img[4 * i];
|
|
g = img[4 * i + 1];
|
|
b = img[4 * i + 2];
|
|
max = (r >= g && r >= b) ? r : (g >= b && g >= r) ? g : b;
|
|
min = (r <= g && r <= b) ? r : (g <= b && g <= r) ? g : b;
|
|
out[i] = (max + min) * 257 >> 1;
|
|
}
|
|
return out;
|
|
};
|