最新下载
热门教程
- 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); //处理完像素颜色值之后,记得要这一句将画布重绘
相关文章
- 《侠客风云传》貔貅拳套获取方式 怎么获得吸蓝拳套 08-08
- 黑曜石《宣誓》采用非线性叙事:把选择权交给玩家! 08-08
- 无限暖暖满电行动任务攻略-无限暖暖满电行动任务怎么做 08-08
- 无限暖暖植物在哪采集-无限暖暖植物采集地点汇总 08-08
- 魔兽世界法力陵墓如何去-魔兽世界法力陵墓进去方法攻略 08-08
- 无尽梦回荆棘之梦怎么样-无尽梦回荆棘之梦优势详解 08-08