Heim > Web-Frontend > js-Tutorial > Hauptteil

canvas的神奇用法

PHP中文网
Freigeben: 2016-05-16 19:19:17
Original
1070 Leute haben es durchsucht

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; }
Nach dem Login kopieren

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

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


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage