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;
}