Javascript 使模糊算法与画布图像数据一起工作?
我有以下简单的模糊算法:Javascript 使模糊算法与画布图像数据一起工作?,javascript,algorithm,canvas,blur,Javascript,Algorithm,Canvas,Blur,我有以下简单的模糊算法: for (y = 0; y < height; ++y) { for (x = 0; x < width; ++x) { total = 0 for (ky = -radius; ky <= radius; ++ky) for (kx = -radius; kx <= radius; ++kx) total += source(
for (y = 0; y < height; ++y) {
for (x = 0; x < width; ++x) {
total = 0
for (ky = -radius; ky <= radius; ++ky)
for (kx = -radius; kx <= radius; ++kx)
total += source(x + kx, y + ky)
dest(x, y) = total / (radius * 2 + 1) ^ 2
}
}
这条线需要从一维数组中获得正确的像素,它应该可以正常工作
另外,我忘了说我试图一次模糊一个通道的图像,就像这样:
for (var i=0; i<imgData.data.length; i+=4) {
red[index] = imgData.data[i];
green[index] = imgData.data[i+1];
blue[index] = imgData.data[i+2];
index++;
}
for(var i=0;i为了访问具有二维坐标的一维数组,您可以使用以下公式:
var pixel = pixels[ ( ( y * width ) + x ) * 4 ];
*4被添加到r、g、b、a值的计算中。
xResolution是图像的宽度
所以source()应该是:
function source( imageArray, x, y, imageWidth )
{
var pos = ( ( y * imageWidth ) + x ) * 4;
var val =
{
r : imageArray[ pos ],
g : imageArray[ pos + 1 ],
b : imageArray[ pos + 2 ],
a : imageArray[ pos + 3 ]
};
return val;
}
要访问具有二维坐标的一维数组,可以使用以下公式:
var pixel = pixels[ ( ( y * width ) + x ) * 4 ];
*4被添加到r、g、b、a值的计算中。
xResolution是图像的宽度
所以source()应该是:
function source( imageArray, x, y, imageWidth )
{
var pos = ( ( y * imageWidth ) + x ) * 4;
var val =
{
r : imageArray[ pos ],
g : imageArray[ pos + 1 ],
b : imageArray[ pos + 2 ],
a : imageArray[ pos + 3 ]
};
return val;
}