色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

javascript 高斯模糊

在前端開(kāi)發(fā)中,常常需要對(duì)圖片進(jìn)行特效處理。高斯模糊是一種非常常見(jiàn)的效果之一,利用該效果可以將圖片變得柔和、清晰且不失真。

在javascript中實(shí)現(xiàn)高斯模糊,需要使用canvas。使用canvas處理圖片時(shí)需要先提取圖像數(shù)據(jù),將圖像數(shù)據(jù)放入數(shù)組傳遞給高斯模糊函數(shù),處理完成后再將圖像數(shù)組還原并繪制在canvas上。

//高斯模糊函數(shù)
function gaussianBlur(ctx, imgData, radius) {
var pixes = imgData.data;
var width = imgData.width;
var height = imgData.height;
var gaussMatrix = [],
gaussSum = 0,
x, y,
r, g, b, a,
i, j, k, len;
radius = Math.floor(radius) || 3;
var sigma = radius / 3;
a = 1 / (Math.sqrt(2 * Math.PI) * sigma);
b = -1 / (2 * sigma * sigma);
//生成高斯矩陣
for (i = 0, y = -radius; y <= radius; y++, i++) {
gaussMatrix[i] = [];
for (j = 0, x = -radius; x <= radius; x++, j++) {
r = Math.sqrt(x * x + y * y);
gaussMatrix[i][j] = a * Math.exp(b * (r * r));
gaussSum += gaussMatrix[i][j];
}
}
//歸一化, 保證高斯矩陣的值在[0,1]之間
for (i = 0, len = gaussMatrix.length; i < len; i++) {
for (j = 0; j < len; j++) {
gaussMatrix[i][j] /= gaussSum;
}
}
//利用高斯矩陣,進(jìn)行圖像處理
for (y = 0; y < height; y++) {
for (x = 0; x < width; x++) {
r = g = b = a = 0;
gaussSum = 0;
for (i = -radius; i <= radius; i++) {
j = x + i;
if (j >= 0 && j < width) {
k = y * width + j;
r += pixes[k * 4] * gaussMatrix[radius + i][radius];
g += pixes[k * 4 + 1] * gaussMatrix[radius + i][radius];
b += pixes[k * 4 + 2] * gaussMatrix[radius + i][radius];
gaussSum += gaussMatrix[radius + i][radius];
}
}
i = y * width + x;
pixes[i * 4] = r / gaussSum;
pixes[i * 4 + 1] = g / gaussSum;
pixes[i * 4 + 2] = b / gaussSum;
}
}
ctx.putImageData(imgData, 0, 0);
}
//調(diào)用高斯模糊函數(shù)
var canvas = document.querySelector('canvas');
var ctx = canvas.getContext('2d');
var img = new Image();
img.onload = function() {
canvas.width = img.width;
canvas.height = img.height;
ctx.drawImage(img, 0, 0);
var imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);
gaussianBlur(ctx, imgData, 10);
}
img.src='image.jpg';

通過(guò)上述代碼,利用高斯矩陣進(jìn)行圖像處理即可實(shí)現(xiàn)高斯模糊效果。半徑越大,圖像越模糊,但處理時(shí)間也會(huì)逐步增加,因此根據(jù)實(shí)際需求選擇合適的半徑值。

總的來(lái)說(shuō),javascript實(shí)現(xiàn)高斯模糊效果是一個(gè)非常簡(jiǎn)單而又實(shí)用的處理方法。利用該方法可以幫助前端開(kāi)發(fā)者在圖片處理時(shí)達(dá)到更高的效果操作。