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 相关文章推荐
基于jquery的网页SELECT下拉框美化代码
Oct 28 Javascript
Javascript中Array.prototype.map()详解
Oct 22 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
Mar 04 Javascript
js去字符串前后空格的实现方法
Feb 26 Javascript
Canvas 绘制粒子动画背景
Feb 15 Javascript
打字效果动画的4种实现方法(超简单)
Oct 18 Javascript
解决option标签selected=&quot;selected&quot;属性失效的问题
Nov 06 Javascript
JavaScript 跨域之POST实现方法
May 07 Javascript
JavaScript面向对象的程序设计(犯迷糊的小羊)
May 27 Javascript
JS中数组实现代码(倒序遍历数组,数组连接字符串)
Dec 29 Javascript
详细介绍解决vue和jsp结合的方法
Feb 06 Javascript
JavaScript实现鼠标经过表格某行时此行变色
Nov 20 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
PHP5 安装方法
2007/01/15 PHP
Windows下编译PHP5.4和xdebug全记录
2015/04/03 PHP
如何用PHP来实现一个动态Web服务器
2015/07/29 PHP
JS判断字符串长度的5个方法(区分中文和英文)
2014/03/18 Javascript
jQuery的animate函数学习记录
2014/08/08 Javascript
用js读、写、删除Cookie代码续篇
2014/12/03 Javascript
JS JSOP跨域请求实例详解
2016/07/04 Javascript
JS获取及验证开始结束日期的方法
2016/08/20 Javascript
对js中回调函数的一些看法
2016/08/29 Javascript
jQuery ui autocomplete选择列表被Bootstrap模态窗遮挡的完美解决方法
2016/09/23 Javascript
Bootstrap fileinput文件上传预览插件使用详解
2017/05/16 Javascript
JavaScript截屏功能的实现代码
2017/07/28 Javascript
JavaScript中字符串的常用操作方法及特殊字符
2018/03/18 Javascript
Vue $emit $refs子父组件间方法的调用实例
2018/09/12 Javascript
在NPM发布自己造的轮子的方法步骤
2019/03/09 Javascript
vue使用el-upload上传文件及Feign服务间传递文件的方法
2019/03/15 Javascript
Python中操作MySQL入门实例
2015/02/08 Python
Python虚拟环境项目实例
2017/11/20 Python
Python实现判断一个字符串是否包含子串的方法总结
2017/11/21 Python
十分钟搞定pandas(入门教程)
2019/06/21 Python
python 日期排序的实例代码
2019/07/11 Python
实例详解Python装饰器与闭包
2019/07/29 Python
Python中print函数简单使用总结
2019/08/05 Python
HTML5几个设计和修改的页面范例分享
2015/09/29 HTML / CSS
使用html5 canvas绘制圆环动效
2019/06/03 HTML / CSS
英国殿堂级有机护肤品牌:Rodial
2017/04/17 全球购物
美国隐形眼镜网上商店:Lens.com
2019/09/03 全球购物
20年同学聚会感言
2014/02/03 职场文书
环保倡议书500字
2014/05/15 职场文书
医院见习报告范文
2014/11/03 职场文书
夫妻忠诚协议书范本
2014/11/17 职场文书
2015年学生会工作总结范文
2015/03/31 职场文书
病假条格式范文
2015/08/17 职场文书
go:垃圾回收GC触发条件详解
2021/04/24 Golang
JavaScript实现简单计时器
2021/06/22 Javascript
html,css,javascript是怎样变成页面的
2023/05/07 HTML / CSS