canvas的神奇用法


Posted in Javascript onFebruary 03, 2017

canvas有一个神奇的方法getImageData这个玩意。它可以获取canvas内图像的没一个像素点的颜色值获取,而且可以改变。

如果你有各种滤镜的算法。那么用canvas就可以实现图片的滤镜转化,可以做成类似美图秀秀那样的功能。

使用方法:

1:先将图片导入画布。

2:var canvasData = context.getImageData(0, 0, canvas.width, canvas.height);  //用这个将图片每个像素点的信息获取出来,得到一个数组。注意得到的信息不是[[r,g,b,a],[r,g,b,a]]这样的二维数组而是[r,g,b,a,r,g,b,a]这样的按rgba顺序排列的单个的数组。

3:这一步就是开始将每个像素的rgba改变。这里简单介绍一下灰度效果的算法及实现步骤。

function gray(canvasData)
{
for ( var x = 0; x < canvasData.width; x++) {
 for ( var y = 0; y < canvasData.height; y++) {
 // Index of the pixel in the array
 var idx = (x + y * canvasData.width) * 4;
 var r = canvasData.data[idx + 0];
 var g = canvasData.data[idx + 1];
 var b = canvasData.data[idx + 2];
 var gray = .299 * r + .587 * g + .114 * b;
 // assign gray scale value
 canvasData.data[idx + 0] = gray; // Red channel
 canvasData.data[idx + 1] = gray; // Green channel
 canvasData.data[idx + 2] = gray; // Blue channel
 canvasData.data[idx + 3] = 255; // Alpha channel
 // add black border
 if(x < 8 || y < 8 || x > (canvasData.width - 8) || y > (canvasData.height - 8)) 
 {
  canvasData.data[idx + 0] = 0;
  canvasData.data[idx + 1] = 0;
  canvasData.data[idx + 2] = 0;
 }
 }
}
return canvasData;
}

4:context.putImageData(canvasData, 0, 0); //处理完像素颜色值之后,记得要这一句将画布重绘

这些个代码就是将图片转化为黑白效果的代码,具体可以实现多少效果就得看你掌握的滤镜算法有多少了。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
JQuery对class属性的操作实现按钮开关效果
Oct 11 Javascript
js实现倒计时时钟的示例代码
Dec 17 Javascript
jQuery实现鼠标经过提示信息的地图热点效果
Apr 26 Javascript
解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
Dec 10 Javascript
jquery实现全屏滚动
Dec 28 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
Feb 26 Javascript
js一维数组、多维数组和对象的混合使用方法
Apr 03 Javascript
BootStrap实现邮件列表的分页和模态框添加邮件的功能
Oct 13 Javascript
js通过指定下标或指定元素进行删除数组的实例
Jan 12 Javascript
Vue2仿淘宝实现省市区三级联动
Apr 15 Javascript
使用vue-cli编写vue插件的方法
Feb 26 Javascript
Paypal支付不完全指北
Jun 04 Javascript
Jquery实现跨域异步上传文件总结
Feb 03 #Javascript
js 递归和定时器的实例解析
Feb 03 #Javascript
js实现文本上下来回滚动
Feb 03 #Javascript
jquery代码规范让代码越来越好看
Feb 03 #Javascript
Javascript for in的缺陷总结
Feb 03 #Javascript
canvas绘制七巧板
Feb 03 #Javascript
JS对象是否拥有某属性如何判断
Feb 03 #Javascript
You might like
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
用cookies实现的可记忆的样式切换效果代码下载
2007/12/24 Javascript
JS 显示当前日期与时间的代码
2010/03/24 Javascript
jquery高效反选具体实现
2013/05/05 Javascript
js控制的遮罩层实例介绍
2013/05/29 Javascript
jQuery 全选/反选以及单击行改变背景色实例
2013/07/02 Javascript
thinkphp中常用的系统常量和系统变量
2014/03/05 Javascript
dreamweaver 8实现Jquery自动提示
2014/12/04 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
2015/08/22 Javascript
Angularjs实现mvvm式的选项卡示例代码
2016/09/08 Javascript
react-native fetch的具体使用方法
2017/11/01 Javascript
vue实现仿淘宝结账页面实例代码
2017/11/08 Javascript
详解解决Vue相同路由参数不同不会刷新的问题
2018/10/12 Javascript
vue的滚动条插件实现代码
2019/09/07 Javascript
Vue中使用matomo进行访问流量统计的实现
2019/11/05 Javascript
js实现飞机大战小游戏
2020/08/26 Javascript
Python从MP3文件获取id3的方法
2015/06/15 Python
Python实现简单的文件传输与MySQL备份的脚本分享
2016/01/03 Python
Python如何读取MySQL数据库表数据
2017/03/11 Python
Anaconda下配置python+opencv+contribx的实例讲解
2018/08/06 Python
解决PyCharm import torch包失败的问题
2018/10/13 Python
python redis 删除key脚本的实例
2019/02/19 Python
一款利用纯css3实现的360度翻转按钮的实例教程
2014/11/05 HTML / CSS
HTML5中input输入框默认提示文字向左向右移动的示例代码
2020/09/10 HTML / CSS
美国知名的在线旅游服务网站:Priceline
2016/07/23 全球购物
ECCO爱步美国官网:来自丹麦的鞋履品牌
2016/11/23 全球购物
SmartBuyGlasses台湾:名牌眼镜,名牌太阳眼镜及隐形眼镜
2017/01/04 全球购物
Radley英国官网:英国莱德利小狗包
2019/03/21 全球购物
马德里运动鞋商店:Nigra Mercato
2020/02/16 全球购物
三好学生自我鉴定
2013/12/17 职场文书
优秀团支部事迹材料
2014/02/08 职场文书
学校法制宣传日活动总结
2014/11/01 职场文书
教师个人考察材料
2014/12/16 职场文书
珍爱生命主题班会
2015/08/13 职场文书
Pytorch 实现变量类型转换
2021/05/17 Python
ICOM R71E和R72E图文对比解说
2022/04/07 无线电