mirror of
https://github.com/publiclab/image-sequencer.git
synced 2025-12-11 10:49:59 +01:00
47 lines
1.1 KiB
JavaScript
47 lines
1.1 KiB
JavaScript
var _ = require('lodash');
|
|
|
|
module.exports = exports = function(pixels, contrast) {
|
|
let oldpix = _.cloneDeep(pixels);
|
|
contrast = Number(contrast)
|
|
if (contrast < -100) contrast = -100;
|
|
if (contrast > 100) contrast = 100;
|
|
contrast = (100.0 + contrast) / 100.0;
|
|
contrast *= contrast;
|
|
|
|
for (let i = 0; i < pixels.shape[0]; i++) {
|
|
for (let j = 0; j < pixels.shape[1]; j++) {
|
|
var r = oldpix.get(i, j, 0) / 255.0;
|
|
r -= 0.5;
|
|
r *= contrast;
|
|
r += 0.5;
|
|
r *= 255;
|
|
if (r < 0) r = 0;
|
|
if (r > 255) r = 255;
|
|
|
|
|
|
var g = oldpix.get(i, j, 1) / 255.0;
|
|
g -= 0.5;
|
|
g *= contrast;
|
|
g += 0.5;
|
|
g *= 255;
|
|
if (g < 0) g = 0;
|
|
if (g > 255) g = 255;
|
|
|
|
|
|
var b = oldpix.get(i, j, 2) / 255.0;
|
|
b -= 0.5;
|
|
b *= contrast;
|
|
b += 0.5;
|
|
b *= 255;
|
|
if (b < 0) b = 0;
|
|
if (b > 255) b = 255;
|
|
|
|
|
|
pixels.set(i, j, 0, r);
|
|
pixels.set(i, j, 1, g);
|
|
pixels.set(i, j, 2, b);
|
|
|
|
}
|
|
}
|
|
return pixels;
|
|
} |