<!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 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;
xiugaiPxData[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 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;
}
}
}
}
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(){
var imgData =context1.getImageData(0,0,100,100);
var pxData = imgData.data;
for(var i=0;i<10000;i++){
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;
}
for(var i=0;i<100;i++){
for(var j=0;j<100;j++){
var p = (i*j)+i;
pxData[p*4+1] = 255;
var x = Math.random();
if(x<0.2){
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>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通