konva
Version:
HTML5 2d canvas library for interactive graphics, design editors, whiteboards, and diagrams.
26 lines (25 loc) • 626 B
JavaScript
/**
* Solarize Filter
* @function
* @name Solarize
* @memberof Konva.Filters
* @param {Object} imageData
* @example
* node.cache();
* node.filters([Konva.Filters.Solarize]);
*/
export const Solarize = function (imageData) {
const threshold = 128;
const d = imageData.data;
for (let i = 0; i < d.length; i += 4) {
const r = d[i], g = d[i + 1], b = d[i + 2];
// sRGB luma
const L = 0.2126 * r + 0.7152 * g + 0.0722 * b;
if (L >= threshold) {
d[i] = 255 - r;
d[i + 1] = 255 - g;
d[i + 2] = 255 - b;
}
}
return imageData;
};