摩尔纹滤镜moir

 

 

 function moir(imgData) {
            var width = imgData.width,
                height = imgData.height,
                pixelData = imgData.data,
                Center_X = (width + 1) / 2,
                Center_Y = (height + 1) / 2,
                Degree = Degree || 20,
                beta;

            for (var i = 1; i < height; i++) {
                for (j = 1; j < width; j++) {
                    x0 = j - Center_X;
                    y0 = Center_Y - i;
                    if (x0 != 0) {
                        beta = Math.atan(y0 / x0);
                    }
                    if (x0 < 0) {
                        beta = beta + Math.PI;
                    } else {
                        beta = Math.PI / 2;
                    }
                    var radius = Math.sqrt(x0 * x0 + y0 * y0);
                    beta = beta + radius * Degree;
                    x = radius * Math.sin(beta);
                    y = radius * Math.cos(beta);
                    if (x > 1 && x < width && y < height && y > 1) {
                        x1 = Math.floor(x);
                        y1 = Math.floor(y);
                        p = x - x1;
                        q = y - y1;
                        var r0 = for_img(x1, y1, p, q, 0);
                        var g0 = for_img(x1, y1, p, q, 1);
                        var b0 = for_img(x1, y1, p, q, 2);
                        var p = i * canvas.width + j;
                        pixelData[p * 4 + 0] = r0;
                        pixelData[p * 4 + 1] = g0;
                        pixelData[p * 4 + 2] = b0;
                    }
                }
            }

            function for_img(x, y, p, q, n) {
                return pixelData[(x * width + y) * 4 + n] * (1 - p) * (1 - q) + pixelData[(x * width + y + 1) * 4 + n] * p * (1 - q) + pixelData[((x + 1) * width + y) * 4 + n] * q * (1 - p) + pixelData[((x + 1) * width + y + 1) * 4 + n] * p * q
            }
            imgData.data = pixelData;
            return imgData;

        }

  

 

posted @ 2019-05-30 10:26  dnoyeb  阅读(613)  评论(0编辑  收藏  举报