Closed. This question is not reproducible or was caused by typos。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
6年前关闭。
我是html5的新手。我正在尝试应用此公式使图像模糊,但Web浏览器在pixelcalculator函数上显示错误意外令牌。谢谢您的帮助,我是编程方面的新手
想改善这个问题吗? 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个属性r
,g
,b
的对象,但是您尝试使用ori[0]
,ori[1]
来访问它们。而不是ori.r
,ori.g` ..)
声明对象时,键用:
值分隔,而不用=
值分隔(就像在pixelcalculator
函数中一样)
通常,您必须阅读有关javascript语法的更多信息。
请参见http://eloquentjavascript.net/contents.html和https://developer.mozilla.org/en-US/docs/Web/JavaScript
关于javascript - 初学者寻求矩阵卷积的帮助,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20408308/
10-13 02:21