Closed. This question is not reproducible or was caused by typos。它当前不接受答案。
                        
                    
                
            
        
            
        
                
                    
                
            
                
                    想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                
                    6年前关闭。
            
        

    

function md1() {
    var canvas = document.getElementById('c1');
    var ctx = canvas.getContext('2d');

    function blur() {
        var cd5 = ctx.getImageData(0, 0, canvas.height, canvas.width);
        var pxls = cd5.data;
        var r = 0;
        var g = 0;
        var b = 0;
        var x = 0,
            y = 0,
            height, width;

        function pixelcalculator(pxls, x, y, cd5.width) {
            var canvasformula = ((y * pxls.width) + x) * 4;
            var pixel = {
                r = pxls[canvasformula],
                g = pxls[canvasformula + 1],
                b = pxls[canvasformula + 2]
            }
            return pixel;
        }


        for (y = 0; y < pxls.height; y += 4) {
            for (x = 4; x < pxls.width; x += 4) {

                var ori = pixelcalculator(x, y);
                var modi1 = pixelcalculator(x - 1, y - 1);
                var modi2 = pixelcalculator(x, y - 1);
                var modi3 = pixelcalculator(x + 1, y - 1);
                var modi4 = pixelcalculator(x - 1, y);
                var modi5 = pixelcalculator(x + 1, y);
                var modi6 = pixelcalculator(x - 1, y + 1);
                var modi7 = pixelcalculator(x - 1, y);
                var modi8 = pixelcalculator(x + 1, y + 1);

                var red = (ori[0] * 1 / 9) + (modi1[0] * 1 / 9) + (modi2[0] * 1 / 9) + (modi3[0] * 1 / 9) + (modi4[0] * 1 / 9) + (modi5[0] * 1 / 9) + (modi6[0] * 1 / 9) + (modi7[0] * 1 / 9) + (modi8[0] * 1 / 9);
                var green = (ori[1] * 1 / 9) + (modi1[1] * 1 / 9) + (modi2[1] * 1 / 9) + (modi3[1] * 1 / 9) + (modi4[1] * 1 / 9) + (modi5[1] * 1 / 9) + (modi6[1] * 1 / 9) + (modi7[1] * 1 / 9) + (modi8[1] * 1 / 9);
                var blue = (ori[2] * 1 / 9) + (modi1[2] * 1 / 9) + (modi2[2] * 1 / 9) + (modi3[2] * 1 / 9) + (modi4[2] * 1 / 9) + (modi5[2] * 1 / 9) + (modi6[2] * 1 / 9) + (modi7[2] * 1 / 9) + (modi8[2] * 1 / 9);
            }
        }

    }



    ctx.putImageData(cd5, 0, 0);
}


我是html5的新手。我正在尝试应用此公式使图像模糊,但Web浏览器在pixelcalculator函数上显示错误意外令牌。谢谢您的帮助,我是编程方面的新手

最佳答案

您应该阅读有关函数的更多信息(尝试http://eloquentjavascript.net/chapter3.html

声明函数的参数时,仅声明其名称。您当时无法传递值。

这些值将在调用该函数时传递给它们。

由于cd5.width,因此.作为参数名称无效

同样,在调用var ori = pixelcalculator(x,y) ;时,您需要按照声明它们的顺序传递变量(并且还需要传递将在函数内部使用的所有变量)



您的代码还有其他问题,例如


在内部作用域中声明变量,并尝试在该作用域之外访问它们,等等。
尝试像访问数组一样访问对象的属性(pixelcalculator返回具有3个属性rgb的对象,但是您尝试使用ori[0]ori[1]来访问它们。而不是ori.r,ori.g` ..)
声明对象时,键用:值分隔,而不用=值分隔(就像在pixelcalculator函数中一样)


通常,您必须阅读有关javascript语法的更多信息。
请参见http://eloquentjavascript.net/contents.htmlhttps://developer.mozilla.org/en-US/docs/Web/JavaScript

关于javascript - 初学者寻求矩阵卷积的帮助,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20408308/

10-13 02:21