zoukankan      html  css  js  c++  java
  • 摩尔纹滤镜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;
    
            }
    

      

  • 相关阅读:
    MySql.Data.dll的版本
    发现一个“佛系记账本”
    坚果云无法同步SVN文件夹
    Kali Linux打开多个终端窗口
    修改Kali Linux终端主题
    Kali Linux搜索软件包
    指定无线网卡监听信道
    解决Aireplay-ng信道问题
    查看干扰进程
    使用Kali官网提供的虚拟机系统
  • 原文地址:https://www.cnblogs.com/ckAng/p/10948126.html
Copyright © 2011-2022 走看看