blurR越大,未被处理的像素点越多

来源:4-3 Canvas 更复杂的滤镜效果

x米多米拉

2018-08-08 10:10

图片外围一圈都没有被处理

写回答 关注

1回答

  • x米多米拉
    2018-08-08 10:29:18

    改成下面这样了,不知道还有没有问题,欢迎交流~

    var blurR = 50;

    for(var i = 0; i < canvasA.height; i++){

        for(var j = 0; j < canvasA.width; j++ ){

            var r = 0,g = 0,b = 0,totalNum = 0;

            for(var m = -blurR; m <= blurR; m++){

                for(var n = -blurR; n <= blurR;n++){

                    var x = i + m;

                    var y = j + n;

                    if(x<0||y<0||x >= canvasA.height ||y >= canvasA.width)

                    continue;

                    totalNum++;

                    var p = x*canvasA.width+y;

                    r += tmpData[4*p+0];

                    g += tmpData[4*p+1];

                    b += tmpData[4*p+2];

                }

            }

            var p = i*canvasA.width+j;

            tmpData[4*p+0] = r/totalNum;

            tmpData[4*p+1] = g/totalNum;

            tmpData[4*p+2] = b/totalNum;

        }

    }


Canvas玩转图像处理

canvas系列第三课,学会编写图像算法,一起玩转图像处理吧

60368 学习 · 125 问题

查看课程

相似问题