大佬教程收集整理的这篇文章主要介绍了html5 canvas 图片打马赛克 demo,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
<!DOCTYPE HTML> <html> <head> <Meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Canvas Mosaic</title> <style> #pic{ display:none; } </style> </head> <body> The size of the original pic need to be 360 pixs.<br/> <img id="pic" src="star.jpg" width="360" height="360"/><br/><br/> canvas 标签<br/> <canvas id="myCanvas" width="360" height="800"></canvas> <script type="text/javascript"> var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); var img=document.getElementById("pic"); img.onload = function(){ ctx.drawImage(img,0); var picSize = 360; var currentX = 0; var currentY = 0; while(currentY<picSize && currentX<picSizE){ var imageData = ctx.getImageData(currentX,currentY,20,20); // need to run on server due to the using getImageDta var rgbaArray =caculateRGBA(imageData); var newImageData = ctx.createImageData(imageData); for (var i = 0; i <newImageData.width*newImageData.height*4; i+=4){ newImageData.data[i+0]=rgbaArray[0]; newImageData.data[i+1]=rgbaArraY[1]; newImageData.data[i+2]=rgbaarray[2]; newImageData.data[i+3]=rgbaArraY[3]; }; ctx.putImageData(newImageData,currentX,currentY+400); currentX+=20; if(currentX>=picSizE){ currentX=0; currentY+=20; }; } function caculateRGBA(imgData){ var RGBA = [0,255]; //caculate avg rgb var sumR = 0; var sumG = 0; var sumB = 0; var sumA = 0; var pixNum = imgData.width*imgData.height; //console.log("area width: " + imgData.width + " pixs."); //console.log("area heitht: " + imgData.height + " pixs."); //console.log("@R_363_10586@l pix number: " + pixNum); for (var i = 0; i <imgData.width*imgData.height*4; i+=4) { sumR += imgData.data[i+0]; sumG += imgData.data[i+1]; sumB += imgData.data[i+2]; sumA += imgData.data[i+3]; }; var avgR = Math.round(sumR/pixNum); var avgG = Math.round(sumG/pixNum); var avgB = Math.round(sumB/pixNum); var avgA = Math.round(sumA/pixNum); /* console.log("R:"+avgR); console.log("G:"+avgG); console.log("B:"+avgB); console.log("A:"+avgA); */ RGBA[0] = avgR; RGBA[1] = avgG; RGBA[2] = avgB; RGBA[3] = avgA; console.log(RGBA); return RGBA; }; }; </script> </body> </html>
以上是大佬教程为你收集整理的html5 canvas 图片打马赛克 demo全部内容,希望文章能够帮你解决html5 canvas 图片打马赛克 demo所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。