You can do many of these effects in plain CSS using the filter operator. As a bonus, you get hardware acceleration if you combine them with translate3d(0, 0, 0).
"grafi.js is a library intended for learning about how image processing works"
It was absolutely fantastic; really great information about image data & how to process it.
new Uint8ClampedArray(ndarray.data); they code is pretty rough & documentation is not great
There are much better tutorials out there for image processing:
http://www.html5rocks.com/en/tutorials/canvas/imagefilters/And even if I programmatically insert inline CSS, there's always the compatibility issues and filter restrictions.
http://evanw.github.io/webgl-filter/
https://v3.polarr.co/ (this one seems to be the only real company instead of a demo)