最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
canvas的神奇用法
时间:2022-06-25 18:08:40 编辑:袖梨 来源:一聚教程网
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改变。这里简单介绍一下灰度效果的算法及实现步骤。
代码如下 | 复制代码 |
functiongray(canvasData) { for(varx = 0; x < canvasData.width; x++) { for(vary = 0; y < canvasData.height; y++) { // Index of the pixel in the array varidx = (x + y * canvasData.width) * 4; varr = canvasData.data[idx + 0]; varg = canvasData.data[idx + 1]; varb = canvasData.data[idx + 2]; vargray = .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; } } } returncanvasData; } |
4:context.putImageData(canvasData, 0, 0); //处理完像素颜色值之后,记得要这一句将画布重绘
相关文章
- “十月朝,糍粑碌碌烧”说的是小雪时节的哪一项习俗 蚂蚁庄园11月22日答案早知道 11-25
- 以闪亮之名宠物礼包怎么样 11-25
- 崩坏星穹铁道星期日用什么光锥 11-25
- 崩坏星穹铁道星期日用什么光锥 崩铁星期日光锥推荐搭配介绍 11-25
- 崩坏星穹铁道星期日技能机制怎么样 崩铁星期日技能机制介绍 11-25
- 崩坏星穹铁道星期日遗器怎么选择 崩铁星期日遗器推荐搭配介绍 11-25