类似操作像素的博主还写过一篇文章:原生JavaScript + Canvas实现图片局部放大器
1. 效果图
2. 实现原理
滤镜效果主要使用的均为canvas的getImageData以及putImageData。
(以上两个api详细介绍可以点击蓝色链接,跳转到MDN查看)
操纵getImageData
函数返回的ImageData图片的像素信息来给图片增加滤镜效果。
2.1 负片滤镜
负片滤镜会从255之中减去每个像素的红,绿,蓝分量值,再将差值设置回去,这样就反转了颜色
2.2 黑白滤镜
黑白滤镜会计算出每个像素红、绿、蓝分量值的平均值,然后将三个分量值都设置成为这个值,就把图片从彩色变为黑白