diff options
| author | Jules <jules@asdf.us> | 2015-04-22 13:54:19 -0400 |
|---|---|---|
| committer | Jules <jules@asdf.us> | 2015-04-22 13:54:19 -0400 |
| commit | 1eed611c931d0b386c9c336d01b2644e97331ac0 (patch) | |
| tree | 87cd78e9dfd56119859b856688cf61ad6743c554 | |
| parent | 3b5fd66c6b69b00199c73764012f9563254f0fe4 (diff) | |
| -rw-r--r-- | index.html | 2 | ||||
| -rw-r--r-- | smartblur.js | 110 |
2 files changed, 56 insertions, 56 deletions
@@ -1,7 +1,7 @@ <style> canvas { display: inline-block; } </style> -<body><input type="text" id="url_el"><div id="img_el"></div></body> +<body><input type="text" placeholder="paste a URL" id="url_el"><div id="img_el"></div></body> <script src="convolve.js"></script> <script src="smartblur.js"></script> <script src="fetch.js"></script> diff --git a/smartblur.js b/smartblur.js index 181b1b4..1a6cebb 100644 --- a/smartblur.js +++ b/smartblur.js @@ -5,7 +5,7 @@ SmartBlurFilter = function () { var REGION_SIZE = 5 var edge_zero_fill = true - var kx = -((REGION_SIZE/2)|0), ky = -((REGION_SIZE/2)|0), klen = REGION_SIZE*REGION_SIZE + var kx = -((REGION_SIZE/2)|0), ky = -((REGION_SIZE/2)|0), klen = REGION_SIZE*REGION_SIZE var kernelArray = [ 1,1,1,1,1,1,1,1,1, @@ -29,31 +29,31 @@ SmartBlurFilter = function () { function rmsError(src, i, size) { var ave = 0; - var len = size*size, data = src.data + var len = size*size, data = src.data - var ix, iy - var r,g,b,a - var w = src.width, h = src.height - ix = i%w - iy = (i/w)|0 - it = i * 4 - r = g = b = a = 0 - for (var j = 0; j < klen; j++) { - jx = ix + j%size + kx - jy = iy + ((j/size)|0) + ky - jt = 4 * (jx + jy*w) - if (0 > jx || jx > w || 0 > jy || jy > h) { - if (edge_zero_fill) { - continue - } - jt = it - } - r += data[jt] -// g += data[jt+1] -// b += data[jt+2] -// a += data[jt+3] - } - r /= klen + var ix, iy + var r,g,b,a + var w = src.width, h = src.height + ix = i%w + iy = (i/w)|0 + it = i * 4 + r = g = b = a = 0 + for (var j = 0; j < klen; j++) { + jx = ix + j%size + kx + jy = iy + ((j/size)|0) + ky + jt = 4 * (jx + jy*w) + if (0 > jx || jx > w || 0 > jy || jy > h) { + if (edge_zero_fill) { + continue + } + jt = it + } + ave += data[jt] +// g += data[jt+1] +// b += data[jt+2] +// a += data[jt+3] + } + ave /= klen // g /= klen // b /= klen // a /= klen @@ -61,48 +61,48 @@ SmartBlurFilter = function () { var diff = 0 var accumulator = 0 - for (var j = 0; j < klen; j++) { - jx = ix + j%size + kx - jy = iy + ((j/size)|0) + ky - jt = 4 * (jx + jy*w) - if (0 > jx || jx > w || 0 > jy || jy > h) { - if (edge_zero_fill) { - continue - } - jt = it - } - diff = data[ jt ] - ave - diff *= diff - accumulator += diff + for (var j = 0; j < klen; j++) { + jx = ix + j%size + kx + jy = iy + ((j/size)|0) + ky + jt = 4 * (jx + jy*w) + if (0 > jx || jx > w || 0 > jy || jy > h) { + if (edge_zero_fill) { + continue + } + jt = it + } + diff = data[ jt ] - ave + diff *= diff + accumulator += diff } - var rms = accumulator / klen - rms = Math.sqrt(rms) / 255 + var rms = accumulator / klen/10 + rms = Math.sqrt(rms) // / 255 return rms } function lerpPixel( src, dest, blur, i, amt) { - dest[i] = lerp(src[i], blur[i], amt) - dest[i+1] = lerp(src[i+1], blur[i+1], amt) - dest[i+2] = lerp(src[i+2], blur[i+2], amt) - dest[i+3] = lerp(src[i+3], blur[i+3], amt) + dest[i] = lerp(src[i], blur[i], amt) + dest[i+1] = lerp(src[i+1], blur[i+1], amt) + dest[i+2] = lerp(src[i+2], blur[i+2], amt) + dest[i+3] = lerp(src[i+3], blur[i+3], amt) } function blurImage( src, dest, blur, sensitivity ) { var newPixel = 0 var amt = 0 var size = REGION_SIZE - var w = src.width, rms + var w = src.width, rms - var srcData = src.data - var destData = dest.data - var blurData = blur.data + var srcData = src.data + var destData = dest.data + var blurData = blur.data for (var i = 0, len = srcData.length/4; i < len; i++) { - rms = rmsError(src, i, size) - -// amt = rms < sensitivity ? rms/sensitivity : 1.0 - lerpPixel( srcData, destData, blurData, i*4, rms) + rms = rmsError(src, i, size) + amt = rms < sensitivity ? rms/sensitivity : 1.0 +if (1000<i&&i<1100)console.log(rms,amt) + lerpPixel( srcData, destData, blurData, i*4, rms) } return dest @@ -127,12 +127,12 @@ SmartBlurFilter = function () { // blur the cloned image dest = convolver.filter(src, dest); - destctx.putImageData(dest, 0,0) + destctx.putImageData(dest, 0,0) var blurred = destctx.getImageData(0,0,w,h) var dest = srcctx.getImageData(0,0,w,h) dest = blurImage(src, dest, blurred, SENSITIVITY) - destctx.putImageData(dest, 0,0) + destctx.putImageData(dest, 0,0) return dest_canvas } -}
\ No newline at end of file +} |
