Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 2x 1x 1x | import { applyFilter } from 'lens-core';
/**
* Iterate over the array applying the sepia transformation
* @param {Object} data
* @param {Number} length
*/
export const transform = ({ data, length }) => {
for (let i = 0; i < length; i += 4) {
const r = data[i];
const g = data[i + 1];
const b = data[i + 2];
data[i] = r * 0.393 + g * 0.769 + b * 0.189;
data[i + 1] = r * 0.349 + g * 0.686 + b * 0.168;
data[i + 2] = r * 0.272 + g * 0.534 + b * 0.131;
}
return data;
};
/**
* @param {ImageData} data - data of a image extracted from a canvas
* @param {Number} nWorkers - number of workers
* @returns {Promise}
*/
export default function sepia({ data, nWorkers } = {}) {
if (!data) {
throw new Error('lens-filter-sepia:: invalid options provided');
}
return applyFilter({ data, transform, nWorkers });
}
|