JavaScript多种滤镜算法实现代码实例


Posted in Javascript onDecember 10, 2019

这篇文章主要介绍了JavaScript多种滤镜算法实现代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1.灰色滤镜

设定R,G,B值相等

function makeGray(img){
 for(var pixel of img.values()){
  var avg = (pixel.getRed()+pixel.getGreen()+pixel.getBlue())/3;
  pixel.setRed(avg);
  pixel.setGreen(avg);
  pixel.setBlue(avg);
 }
 return img;
}

2.单色滤镜(以红色为例)

计算R,G,B的均值avg,判断avg是否小于128.

function makeRed(img){
 for(var pixel of img.values()){
  var avg = (pixel.getRed()+pixel.getGreen()+pixel.getBlue())/3;
  if(avg<128){
   pixel.setRed(2*avg);
   pixel.setGreen(0);
   pixel.setBlue(0);
  }
  else{
   pixel.setRed(255);
   pixel.setGreen(2*avg-255);
   pixel.setBlue(2*avg-255);
  }
 }
 return img;
}

3.彩色滤镜

function makeRainbow(img){
 for(var pixel of img.values()){
  var x = pixel.getX();
  var y = pixel.getY();
  var avg = (pixel.getRed()+pixel.getGreen()+pixel.getBlue())/3;
  var h = img.height;
  if(y<h/7){
   if(avg<128){
    pixel.setRed(2*avg);
    pixel.setGreen(0);
    pixel.setBlue(0);
   }
   else{
    pixel.setRed(255);
    pixel.setGreen(2*avg-255);
    pixel.setBlue(2*avg-255);
   }
  }
  if(y>=h/7 && y<h*2/7){
   if(avg<128){
    pixel.setRed(2*avg);
    pixel.setGreen(0.8*avg);
    pixel.setBlue(0);
   }
   else{
    pixel.setRed(255);
    pixel.setGreen(1.2*avg-51);
    pixel.setBlue(2*avg-255);
   }
  }
  if(y>=h*2/7 && y<h*3/7){
   if(avg<128){
    pixel.setRed(2*avg);
    pixel.setGreen(2*avg);
    pixel.setBlue(0);
   }
   else{
    pixel.setRed(255);
    pixel.setGreen(255);
    pixel.setBlue(2*avg-255);
   }
  }
  if(y>=h*3/7 && y<h*4/7){
   if(avg<128){
    pixel.setRed(0);
    pixel.setGreen(2*avg);
    pixel.setBlue(0);
   }
   else{
    pixel.setRed(2*avg-255);
    pixel.setGreen(255);
    pixel.setBlue(2*avg-255);
   }
  }
  if(y>=h*4/7 && y<h*5/7){
   if(avg<128){
    pixel.setRed(0);
    pixel.setGreen(0);
    pixel.setBlue(2*avg);
   }
   else{
    pixel.setRed(2*avg-255);
    pixel.setGreen(2*avg-255);
    pixel.setBlue(255);
   }
  }
  if(y>=5*h/7 && y<h*6/7){
   if(avg<128){
    pixel.setRed(0.8*avg);
    pixel.setGreen(0);
    pixel.setBlue(2*avg);
   }
   else{
    pixel.setRed(1.2*avg-51);
    pixel.setGreen(2*avg-255);
    pixel.setBlue(255);
   }
  }
  if(y>=h*6/7){
   if(avg<128){
    pixel.setRed(1.6*avg);
    pixel.setGreen(0);
    pixel.setBlue(1.6*avg);
   }
   else{
    pixel.setRed(0.4*avg+153);
    pixel.setGreen(2*avg-255);
    pixel.setBlue(0.4*avg+153);
   }
  }
 }
 return img;
}

4.模糊滤镜

(1)生成(0,1)之间的

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS判断不同分辨率调用不同的CSS样式文件实现思路及测试代码
Jan 23 Javascript
javascript每日必学之条件分支
Feb 17 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
May 17 Javascript
JS和canvas实现俄罗斯方块
Mar 14 Javascript
Vue 表单控件绑定的实现示例
Aug 11 Javascript
DVA框架统一处理所有页面的loading状态
Aug 25 Javascript
vue引入新版 vue-awesome-swiper插件填坑问题
Jan 25 Javascript
react+ant design实现Table的增、删、改的示例代码
Dec 27 Javascript
小程序从手动埋点到自动埋点的实现方法
Jan 24 Javascript
Vue项目移动端滚动穿透问题的实现
May 19 Javascript
JavaScript实现4位随机验证码的生成
Jan 28 Javascript
vue 自定义组件添加原生事件
Apr 21 Vue.js
vue仿淘宝滑动验证码功能(样式模仿)
Dec 10 #Javascript
vue实现随机验证码功能(完整代码)
Dec 10 #Javascript
vue实现短信验证码登录功能(流程详解)
Dec 10 #Javascript
基于vue实现图片验证码倒计时60s功能
Dec 10 #Javascript
使用Bootstrap做一个朝代历史表
Dec 10 #Javascript
JS实现拼图游戏
Jan 29 #Javascript
Vue的transition-group与Virtual Dom Diff算法的使用
Dec 09 #Javascript
You might like
测试PHP连接MYSQL成功与否的代码
2013/08/16 PHP
php计算函数执行时间的方法
2015/03/20 PHP
thinkphp分页集成实例
2017/07/24 PHP
document.createElement()用法及注意事项(ff下不兼容)
2013/03/13 Javascript
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
javascript实现的HashMap类代码
2014/06/27 Javascript
11种ASP连接数据库的方法
2015/09/18 Javascript
分享五个有用的jquery小技巧
2015/10/08 Javascript
jQuery插件开发汇总
2016/05/15 Javascript
Three.js快速入门教程
2016/09/09 Javascript
详解利用exif.js解决ios手机上传竖拍照片旋转90度问题
2016/11/04 Javascript
Vue 过渡(动画)transition组件案例详解
2017/01/22 Javascript
深入探究AngularJs之$scope对象(作用域)
2017/07/20 Javascript
微信小程序request请求后台接口php的实例详解
2017/09/20 Javascript
jQuery实现的点击标题文字切换字体效果示例【测试可用】
2018/04/26 jQuery
详解swipe使用及竖屏页面滚动方法
2018/06/28 Javascript
基于Node的Axure文件在线预览的实现代码
2019/08/28 Javascript
Python 类的继承实例详解
2017/03/25 Python
python 拷贝特定后缀名文件,并保留原始目录结构的实例
2018/04/27 Python
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
2019/01/05 Python
Python可视化mhd格式和raw格式的医学图像并保存的方法
2019/01/24 Python
python实现电子产品商店
2019/02/26 Python
python numpy 反转 reverse示例
2019/12/04 Python
python -v 报错问题的解决方法
2020/09/15 Python
Python中常用的os操作汇总
2020/11/05 Python
早晨薰衣草在线女性精品店:Morning Lavender
2021/01/04 全球购物
英国珠宝和手表专家:Pleasance & Harper
2020/10/21 全球购物
信息管理专业学生自荐信格式
2013/09/22 职场文书
经管应届生求职信
2013/11/17 职场文书
房地产开发项目建议书
2014/05/16 职场文书
大跃进口号
2014/06/16 职场文书
科级干部群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
新郎答谢词
2015/01/04 职场文书
律政俏佳人观后感
2015/06/09 职场文书
晶体管来复再生式二管收音机
2021/04/22 无线电