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 相关文章推荐
Riot.js 快速的JavaScript单元测试框架
Nov 09 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
Jun 27 Javascript
自制的文件上传JS控件可支持IE、chrome、firefox etc
Apr 18 Javascript
让JavaScript和其它资源并发下载的方法
Oct 16 Javascript
javascript Slip.js实现整屏滑动的手机网页
Nov 25 Javascript
jQuery取得iframe中元素的常用方法详解
Jan 14 Javascript
倾力总结40条常见的移动端Web页面问题解决方案
May 24 Javascript
Node.js中使用jQuery的做法
Aug 17 Javascript
react-router中的属性详解
Jun 01 Javascript
深入理解Angular中的依赖注入
Jun 26 Javascript
react-native滑动吸顶效果的实现过程
Jun 03 Javascript
vue实现选中效果
Oct 07 Javascript
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 不错的学习资料
2009/02/06 PHP
php实现给图片加灰色半透明效果的方法
2014/10/20 PHP
Zend Framework教程之Zend_Registry对象用法分析
2016/03/22 PHP
Extjs中使用extend(js继承) 的代码
2012/03/15 Javascript
form表单中去掉默认的enter键提交并绑定js方法实现代码
2013/04/01 Javascript
js 遍历json返回的map内容示例代码
2013/10/29 Javascript
JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
2015/06/19 Javascript
Bootstrap每天必学之日期控制
2016/03/07 Javascript
jQuery筛选数组之grep、each、inArray、map的用法及遍历json对象
2016/06/20 Javascript
JS获取url参数、主域名的方法实例分析
2016/08/03 Javascript
原生JS+HTML5实现跟随鼠标一起流动的粒子动画效果
2018/05/03 Javascript
详解node字体压缩插件font-spider的用法
2018/09/28 Javascript
jQuery层叠选择器用法实例分析
2019/06/28 jQuery
Vue中函数防抖节流的理解及应用实现
2020/04/24 Javascript
OpenLayers实现图层切换控件
2020/09/25 Javascript
归纳整理Python中的控制流语句的知识点
2015/04/14 Python
Python绘制3D图形
2018/05/03 Python
tensorflow saver 保存和恢复指定 tensor的实例讲解
2018/07/26 Python
python学生管理系统学习笔记
2019/03/19 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
2020/12/08 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
2020/12/14 Python
用Python实现职工信息管理系统
2020/12/30 Python
留学推荐信怎么写
2014/01/25 职场文书
保护环境倡议书范文
2014/05/13 职场文书
团队精神口号
2014/06/06 职场文书
团拜会策划方案
2014/06/07 职场文书
党员群众路线教育实践活动剖析材料
2014/10/10 职场文书
营业员岗位职责
2015/02/11 职场文书
安装工程师岗位职责
2015/02/13 职场文书
奖学金主要事迹范文
2015/11/04 职场文书
2019入党申请书格式
2019/06/25 职场文书
解决Pytorch中关于model.eval的问题
2021/05/22 Python
如何在python中实现ECDSA你知道吗
2021/11/23 Python
Windows Server 2012 修改远程默认端口3389的方法
2022/04/28 Servers
多线程Spring通过@Scheduled实现定时任务
2022/05/25 Java/Android
Java实现贪吃蛇游戏的示例代码
2022/09/23 Java/Android