canvas 之图片模糊&马赛克
来源:互联网 发布:python tempfile模块 编辑:程序博客网 时间:2024/04/30 01:33
<!DOCTYPE html><html><head><meta charset="utf-8"><title></title><style type="text/css">canvas{border: 1px solid red;}</style></head><body><canvas id="vanvas1" width="100" height="100"></canvas><canvas id="vanvas2" width="100" height="100"></canvas><button id="btn">btn</button><button id="mohu">模糊</button><button id="mask">马赛克</button></body><script type="text/javascript">var canvas1 = document.getElementById("vanvas1");var canvas2 = document.getElementById("vanvas2");var context1 = canvas1.getContext("2d");var context2 = canvas2.getContext("2d");var cw = canvas1.width;var ch = canvas1.height;mohu.onclick = function(){//用来循环var xunhuanImgData = context1.getImageData(0,0,100,100);var xunhuanPxData = xunhuanImgData.data;//循环修改var xiugaiImgData = context1.getImageData(0,0,100,100);var xiugaiPxData = xiugaiImgData.data;var quan = 4;for(var i=quan;i<cw-quan;i++){for(var j=quan;j<ch-quan;j++){//var p = j*cw+i; // 当前元素 ...shanchu.var sumR = 0;var sumG = 0;var sumB = 0;//找他周围的元素,,for(var x = -quan;x<=quan;x++){for(var y = -quan;y<=quan;y++){var xx = i+x;var yy = j+y;var pp = yy*cw+xx; //周围的元素。sumR += xunhuanPxData[pp*4+0];sumG += xunhuanPxData[pp*4+1];sumB += xunhuanPxData[pp*4+2];}}var totlal = (2*quan+1)*(2*quan+1);var avgR = sumR/totlal;var avgG = sumG/totlal;var avgB = sumB/totlal;var p = j*cw+i; //benshenxiugaiPxData[p*4+0] = avgR;xiugaiPxData[p*4+1] = avgG;xiugaiPxData[p*4+2] = avgB;}}context2.putImageData(xiugaiImgData,0,0,0,0,100,100);}mask.onclick = function(){//用来循环var xunhuanImgData = context1.getImageData(0,0,100,100);var xunhuanPxData = xunhuanImgData.data;//循环修改var xiugaiImgData = context1.getImageData(0,0,100,100);var xiugaiPxData = xiugaiImgData.data;var quan = 3;for(var i=50;i<80;i = i+2*quan+1){for(var j=50;j<80;j = j+2*quan+1){//var p = j*cw+i; // 当前元素 ...shanchu.var sumR = 0;var sumG = 0;var sumB = 0;//找他周围的元素,,for(var x = -quan;x<=quan;x++){for(var y = -quan;y<=quan;y++){var xx = i+x;var yy = j+y;var pp = yy*cw+xx; //周围的元素。sumR += xunhuanPxData[pp*4+0];sumG += xunhuanPxData[pp*4+1];sumB += xunhuanPxData[pp*4+2];}}var totlal = (2*quan+1)*(2*quan+1);var avgR = sumR/totlal;var avgG = sumG/totlal;var avgB = sumB/totlal;for(var x = -quan;x<=quan;x++){for(var y = -quan;y<=quan;y++){var xx = i+x;var yy = j+y;var pp = yy*cw+xx; //周围的元素。xiugaiPxData[pp*4+0] = avgR;xiugaiPxData[pp*4+1] = avgG;xiugaiPxData[pp*4+2] = avgB;//xiugaiPxData[pp*4+3] = 0~255;}}}}context2.putImageData(xiugaiImgData,0,0,0,0,100,100);}//}var fengjing = new Image();fengjing.src = "qq.jpg";fengjing.onload = function(){context1.drawImage(this,0,0,100,100);}btn.onclick = function(){//1获取canvas1中的图片数据【imgData】var imgData =context1.getImageData(0,0,100,100);//2从imgData中获取像素数据(pxData)var pxData = imgData.data;//3修改像素for(var i=0;i<10000;i++){//pxData[i*4+0] = 22; //R 值//pxData[i*4+1] = 41; //g 值//pxData[i*4+2] = 120; //b 值//pxData[i*4+0] = 0; //R 值var r = pxData[i*4+0];var g = pxData[i*4+1];var b = pxData[i*4+2];pxData[i*4+2] = 255-b;pxData[i*4+1] = 255-g;pxData[i*4+0] = 255-r;//pxData[i*4+0] = 255; //谁=0是就没有了 ,}//4把之前修改过后的结果绘制到canvas2中。//下图解:j: 0123;i:横着的12345个;//0 o o o o o //1o o o o o//2o o o o o//3o o o o o//2方法2 i代表行。j代表高。for(var i=0;i<100;i++){for(var j=0;j<100;j++){var p = (i*j)+i; //确定元素下标;pxData[p*4+1] = 255;//s随机控制var x = Math.random();if(x<0.2){pxData[p*4+0] = 255;pxData[p*4+1] = 255;pxData[p*4+2] = 255;}//if(1%13==0){//pxData[p*4+0] = 255;//pxData[p*4+1] = 255;//pxData[p*4+2] = 255;//}}}context2.putImageData(imgData,0,0,0,0,100,100);}//模糊度==:》》》》》//本身 = (本身+周围)/ 总数 ,本身 = 平均值
// 本身 +周围 = 平均值》》》马赛克;</script></html>
0 0
- canvas 之图片模糊&马赛克
- HTML5 Canvas图片马赛克模糊动画
- html5 canvas 图片打马赛克 demo
- HTML5 canvas生成图片马赛克特效插件
- JS使用canvas给图片打马赛克
- Canvas绘制图片模糊
- Canvas--马赛克
- canvas马赛克
- 【canvas马赛克效果】根据加载的图片动态生成对应的马赛克图片
- C#对图片进行马赛克处理,可控制模糊程度
- html5 canvas drawImage图片模糊
- android Canvas绘制图片模糊
- iOS图片处理之涂抹马赛克解析
- iOS中图片处理之马赛克算法
- html5 canvas绘制图片模糊的问题
- Canvas-drawImage 绘制图片模糊问题
- 修改图片模糊问题canvas.drawImage
- html5 canvas绘制图片模糊的问题
- 欢迎使用CSDN-markdown编辑器
- SPOJ 1812 LCS2 - Longest Common Substring II (后缀自动机)
- [005-Makefile-笔记] Makefile的变量
- Kaggle学习:A Journey through Titanic
- MyBatis连接数据库
- canvas 之图片模糊&马赛克
- 文章标题
- 高校网站被黑,觉得这是什么原因呢?
- Node.js处理excel文件
- java内部类
- Java基础——内部类
- 文章标题
- CPU位数和操作系统位数和计算机字长和C++基本数据类型长度
- redis内存优化、持久化以及主从复制