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 相关文章推荐
JavaScript的parseInt 取整使用
May 09 Javascript
jQuery中bind,live,delegate与one方法的用法及区别解析
Dec 30 Javascript
鼠标经过tr时,改变tr当前背景颜色
Jan 13 Javascript
javascript面向对象快速入门实例
Jan 13 Javascript
详解JavaScript对象的深浅复制
Mar 30 Javascript
微信小程序开发之数据存储 参数传递 数据缓存
Apr 13 Javascript
js判断输入框不能为空格或null值的实现方法
Mar 02 Javascript
Angular设置别名alias的方法
Nov 08 Javascript
layui的表单提交以及验证和修改弹框的实例
Sep 09 Javascript
详解jQuery中的prop()使用方法
Jan 05 jQuery
Vue 3.0中jsx语法的使用
Nov 13 Javascript
五句话帮你轻松搞定js原型链
Dec 09 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处理图片变得简单 基于gb库的图片处理类附实例代码下载
2011/05/17 PHP
javascript some()函数用法详解
2014/11/13 PHP
Linux系统下php获得系统分区信息的方法
2015/03/30 PHP
浅析Yii2集成富文本编辑器redactor实例教程
2016/04/25 PHP
golang与php实现计算两个经纬度之间距离的方法
2016/07/22 PHP
如何利用预加载优化Laravel Model查询详解
2017/08/11 PHP
Laravel路由研究之domain解决多域名问题的方法示例
2019/04/04 PHP
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
2010/03/05 Javascript
StringTemplate遇见jQuery冲突的解决方法
2011/09/22 Javascript
JavaScript常用对象的方法和属性小结
2012/01/24 Javascript
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)
2013/07/09 Javascript
jquery插件splitScren实现页面分屏切换模板特效
2015/06/16 Javascript
基于JQuery实现仿网易邮箱全屏动感滚动插件fullPage
2015/09/20 Javascript
js中getter和setter用法实例分析
2018/08/14 Javascript
python根据出生日期获得年龄的方法
2015/03/31 Python
Python之自动获取公网IP的实例讲解
2017/10/01 Python
flask框架实现连接sqlite3数据库的方法分析
2018/07/16 Python
Python实现多进程的四种方式
2019/02/22 Python
python实现文件的备份流程详解
2019/06/18 Python
python取余运算符知识点详解
2019/06/27 Python
Django获取应用下的所有models的例子
2019/08/30 Python
Python跑循环时内存泄露的解决方法
2020/01/13 Python
Django ORM实现按天获取数据去重求和例子
2020/05/18 Python
Java平台和其他软件平台有什么不同
2015/06/05 面试题
Linux文件操作命令都有哪些
2015/02/27 面试题
土建专业毕业生自荐书
2014/07/04 职场文书
煤矿开采专业求职信
2014/07/08 职场文书
北京英语导游词
2015/02/12 职场文书
全国爱眼日活动总结
2015/02/27 职场文书
交通事故被告答辩状
2015/05/22 职场文书
阿甘正传观后感
2015/06/01 职场文书
横空出世观后感
2015/06/09 职场文书
亲戚关系证明
2015/06/24 职场文书
高中数学教学反思范文
2016/02/18 职场文书
python实现简单聊天功能
2021/07/07 Python
Apache Pulsar集群搭建部署详细过程
2022/02/12 Servers