最新下载
热门教程
- 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); //处理完像素颜色值之后,记得要这一句将画布重绘
相关文章
- 《彩色点点战争》推图常用三大主c玩法详解 01-23
- 《燕云十六声》池鱼林木任务攻略 01-23
- 《大连地铁e出行》查看行程记录方法 01-23
- 《明日方舟》2025春节限定干员余角色介绍 01-23
- 《崩坏:星穹铁道》万敌光锥搭配攻略 01-23
- 《燕云十六声》一药千金任务攻略 01-23