"Dynamic Avatar Blur"
Bootstrap 3.3.0 Snippet by Pankaj0nagpal

<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css"> <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script> <script src="//code.jquery.com/jquery-1.11.1.min.js"></script> <!------ Include the above in your HEAD tag ----------> <div class="container"> <div class="row"> <h1> Dynamically blurring avatar images using Canvas. </h1> </div> <div class="row"> <div class="col-sm-3"> <div class="card"> <canvas class="header-bg" width="250" height="70" id="header-blur"></canvas> <div class="avatar"> <img src="" alt="" /> </div> <div class="content"> <h4>Antriksh Golf View 1 </h4> Antriksh Golf View 1 / Noida 7X for Sale 2BHK (1140 sq.ft.) Around 15th floor with transfer @4750 /sq.ft. All inclusive.</p> <p><button type="button" class="btn btn-default">Contact</button></p> </div> </div> </div> <div class="col-sm-3"> <div class="card"> <canvas class="header-bg" width="250" height="70" id="header-blur"></canvas> <div class="avatar"> <img src="" alt="" /> </div> <div class="content"> <p>Web Developer <br> More description here</p> <p><button type="button" class="btn btn-default">Contact</button></p> </div> </div> </div> <div class="col-sm-3"> <div class="card"> <canvas class="header-bg" width="250" height="70" id="header-blur"></canvas> <div class="avatar"> <img src="" alt="" /> </div> <div class="content"> <p>Web Developer <br> More description here</p> <p><button type="button" class="btn btn-default">Contact</button></p> </div> </div> </div> </div> </div> <img class="src-image" src="data:image/jpg;base64,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"/> <img class="src-image" src="data:image/jpg;base64,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"/> <img class="src-image" src="data:image/jpeg;base64,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"/>
.src-image { display: none; } .card { overflow: hidden; position: relative; border: 1px solid #CCC; border-radius: 8px; text-align: center; padding: 0; background-color: #ffffff; color: rgb(136, 172, 217); } .card .header-bg { /* This stretches the canvas across the entire hero unit */ position: absolute; top: 0; left: 0; width: 100%; height: 70px; border-bottom: 1px #FFF solid; /* This positions the canvas under the text */ z-index: 1; } .card .avatar { position: relative; margin-top: 15px; z-index: 100; } .card .avatar img { width: 100px; height: 100px; -webkit-border-radius: 50%; -moz-border-radius: 50%; border-radius: 50%; border: 5px solid rgba(0,0,30,0.8); }
/* This Snippet is using a modified Stack Blur js lib for blurring the header images. I could not use hosted images because Canvas cannot work with cross domain images. If you want to use hosted images make sure they are on the same domain. Have fun! */ /* StackBlur - a fast almost Gaussian Blur For Canvas Version: 0.5 Author: Mario Klingemann Contact: mario@quasimondo.com Website: http://www.quasimondo.com/StackBlurForCanvas Twitter: @quasimondo In case you find this class useful - especially in commercial projects - I am not totally unhappy for a small donation to my PayPal account mario@quasimondo.de Or support me on flattr: https://flattr.com/thing/72791/StackBlur-a-fast-almost-Gaussian-Blur-Effect-for-CanvasJavascript Copyright (c) 2010 Mario Klingemann Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ var mul_table = [ 512,512,456,512,328,456,335,512,405,328,271,456,388,335,292,512, 454,405,364,328,298,271,496,456,420,388,360,335,312,292,273,512, 482,454,428,405,383,364,345,328,312,298,284,271,259,496,475,456, 437,420,404,388,374,360,347,335,323,312,302,292,282,273,265,512, 497,482,468,454,441,428,417,405,394,383,373,364,354,345,337,328, 320,312,305,298,291,284,278,271,265,259,507,496,485,475,465,456, 446,437,428,420,412,404,396,388,381,374,367,360,354,347,341,335, 329,323,318,312,307,302,297,292,287,282,278,273,269,265,261,512, 505,497,489,482,475,468,461,454,447,441,435,428,422,417,411,405, 399,394,389,383,378,373,368,364,359,354,350,345,341,337,332,328, 324,320,316,312,309,305,301,298,294,291,287,284,281,278,274,271, 268,265,262,259,257,507,501,496,491,485,480,475,470,465,460,456, 451,446,442,437,433,428,424,420,416,412,408,404,400,396,392,388, 385,381,377,374,370,367,363,360,357,354,350,347,344,341,338,335, 332,329,326,323,320,318,315,312,310,307,304,302,299,297,294,292, 289,287,285,282,280,278,275,273,271,269,267,265,263,261,259]; var shg_table = [ 9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24 ]; function stackBlurCanvasRGBA( canvas, top_x, top_y, width, height, radius ) { if ( isNaN(radius) || radius < 1 ) return; radius |= 0; var context = canvas.getContext("2d"); var imageData; try { try { imageData = context.getImageData( top_x, top_y, width, height ); } catch(e) { // NOTE: this part is supposedly only needed if you want to work with local files // so it might be okay to remove the whole try/catch block and just use // imageData = context.getImageData( top_x, top_y, width, height ); try { netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); imageData = context.getImageData( top_x, top_y, width, height ); } catch(e) { alert("Cannot access local image"); throw new Error("unable to access local image data: " + e); return; } } } catch(e) { alert("Cannot access image"); throw new Error("unable to access image data: " + e); } var pixels = imageData.data; var x, y, i, p, yp, yi, yw, r_sum, g_sum, b_sum, a_sum, r_out_sum, g_out_sum, b_out_sum, a_out_sum, r_in_sum, g_in_sum, b_in_sum, a_in_sum, pr, pg, pb, pa, rbs; var div = radius + radius + 1; var w4 = width << 2; var widthMinus1 = width - 1; var heightMinus1 = height - 1; var radiusPlus1 = radius + 1; var sumFactor = radiusPlus1 * ( radiusPlus1 + 1 ) / 2; var stackStart = new BlurStack(); var stack = stackStart; for ( i = 1; i < div; i++ ) { stack = stack.next = new BlurStack(); if ( i == radiusPlus1 ) var stackEnd = stack; } stack.next = stackStart; var stackIn = null; var stackOut = null; yw = yi = 0; var mul_sum = mul_table[radius]; var shg_sum = shg_table[radius]; for ( y = 0; y < height; y++ ) { r_in_sum = g_in_sum = b_in_sum = a_in_sum = r_sum = g_sum = b_sum = a_sum = 0; r_out_sum = radiusPlus1 * ( pr = pixels[yi] ); g_out_sum = radiusPlus1 * ( pg = pixels[yi+1] ); b_out_sum = radiusPlus1 * ( pb = pixels[yi+2] ); a_out_sum = radiusPlus1 * ( pa = pixels[yi+3] ); r_sum += sumFactor * pr; g_sum += sumFactor * pg; b_sum += sumFactor * pb; a_sum += sumFactor * pa; stack = stackStart; for( i = 0; i < radiusPlus1; i++ ) { stack.r = pr; stack.g = pg; stack.b = pb; stack.a = pa; stack = stack.next; } for( i = 1; i < radiusPlus1; i++ ) { p = yi + (( widthMinus1 < i ? widthMinus1 : i ) << 2 ); r_sum += ( stack.r = ( pr = pixels[p])) * ( rbs = radiusPlus1 - i ); g_sum += ( stack.g = ( pg = pixels[p+1])) * rbs; b_sum += ( stack.b = ( pb = pixels[p+2])) * rbs; a_sum += ( stack.a = ( pa = pixels[p+3])) * rbs; r_in_sum += pr; g_in_sum += pg; b_in_sum += pb; a_in_sum += pa; stack = stack.next; } stackIn = stackStart; stackOut = stackEnd; for ( x = 0; x < width; x++ ) { pixels[yi+3] = pa = (a_sum * mul_sum) >> shg_sum; if ( pa != 0 ) { pa = 255 / pa; pixels[yi] = ((r_sum * mul_sum) >> shg_sum) * pa; pixels[yi+1] = ((g_sum * mul_sum) >> shg_sum) * pa; pixels[yi+2] = ((b_sum * mul_sum) >> shg_sum) * pa; } else { pixels[yi] = pixels[yi+1] = pixels[yi+2] = 0; } r_sum -= r_out_sum; g_sum -= g_out_sum; b_sum -= b_out_sum; a_sum -= a_out_sum; r_out_sum -= stackIn.r; g_out_sum -= stackIn.g; b_out_sum -= stackIn.b; a_out_sum -= stackIn.a; p = ( yw + ( ( p = x + radius + 1 ) < widthMinus1 ? p : widthMinus1 ) ) << 2; r_in_sum += ( stackIn.r = pixels[p]); g_in_sum += ( stackIn.g = pixels[p+1]); b_in_sum += ( stackIn.b = pixels[p+2]); a_in_sum += ( stackIn.a = pixels[p+3]); r_sum += r_in_sum; g_sum += g_in_sum; b_sum += b_in_sum; a_sum += a_in_sum; stackIn = stackIn.next; r_out_sum += ( pr = stackOut.r ); g_out_sum += ( pg = stackOut.g ); b_out_sum += ( pb = stackOut.b ); a_out_sum += ( pa = stackOut.a ); r_in_sum -= pr; g_in_sum -= pg; b_in_sum -= pb; a_in_sum -= pa; stackOut = stackOut.next; yi += 4; } yw += width; } for ( x = 0; x < width; x++ ) { g_in_sum = b_in_sum = a_in_sum = r_in_sum = g_sum = b_sum = a_sum = r_sum = 0; yi = x << 2; r_out_sum = radiusPlus1 * ( pr = pixels[yi]); g_out_sum = radiusPlus1 * ( pg = pixels[yi+1]); b_out_sum = radiusPlus1 * ( pb = pixels[yi+2]); a_out_sum = radiusPlus1 * ( pa = pixels[yi+3]); r_sum += sumFactor * pr; g_sum += sumFactor * pg; b_sum += sumFactor * pb; a_sum += sumFactor * pa; stack = stackStart; for( i = 0; i < radiusPlus1; i++ ) { stack.r = pr; stack.g = pg; stack.b = pb; stack.a = pa; stack = stack.next; } yp = width; for( i = 1; i <= radius; i++ ) { yi = ( yp + x ) << 2; r_sum += ( stack.r = ( pr = pixels[yi])) * ( rbs = radiusPlus1 - i ); g_sum += ( stack.g = ( pg = pixels[yi+1])) * rbs; b_sum += ( stack.b = ( pb = pixels[yi+2])) * rbs; a_sum += ( stack.a = ( pa = pixels[yi+3])) * rbs; r_in_sum += pr; g_in_sum += pg; b_in_sum += pb; a_in_sum += pa; stack = stack.next; if( i < heightMinus1 ) { yp += width; } } yi = x; stackIn = stackStart; stackOut = stackEnd; for ( y = 0; y < height; y++ ) { p = yi << 2; pixels[p+3] = pa = (a_sum * mul_sum) >> shg_sum; if ( pa > 0 ) { pa = 255 / pa; pixels[p] = ((r_sum * mul_sum) >> shg_sum ) * pa; pixels[p+1] = ((g_sum * mul_sum) >> shg_sum ) * pa; pixels[p+2] = ((b_sum * mul_sum) >> shg_sum ) * pa; } else { pixels[p] = pixels[p+1] = pixels[p+2] = 0; } r_sum -= r_out_sum; g_sum -= g_out_sum; b_sum -= b_out_sum; a_sum -= a_out_sum; r_out_sum -= stackIn.r; g_out_sum -= stackIn.g; b_out_sum -= stackIn.b; a_out_sum -= stackIn.a; p = ( x + (( ( p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1 ) * width )) << 2; r_sum += ( r_in_sum += ( stackIn.r = pixels[p])); g_sum += ( g_in_sum += ( stackIn.g = pixels[p+1])); b_sum += ( b_in_sum += ( stackIn.b = pixels[p+2])); a_sum += ( a_in_sum += ( stackIn.a = pixels[p+3])); stackIn = stackIn.next; r_out_sum += ( pr = stackOut.r ); g_out_sum += ( pg = stackOut.g ); b_out_sum += ( pb = stackOut.b ); a_out_sum += ( pa = stackOut.a ); r_in_sum -= pr; g_in_sum -= pg; b_in_sum -= pb; a_in_sum -= pa; stackOut = stackOut.next; yi += width; } } context.putImageData( imageData, top_x, top_y ); } function BlurStack() { this.r = 0; this.g = 0; this.b = 0; this.a = 0; this.next = null; } $( document ).ready(function() { var BLUR_RADIUS = 40; var sourceImages = []; $('.src-image').each(function(){ sourceImages.push($(this).attr('src')); }); $('.avatar img').each(function(index){ $(this).attr('src', sourceImages[index] ); }); var drawBlur = function(canvas, image) { var w = canvas.width; var h = canvas.height; var canvasContext = canvas.getContext('2d'); canvasContext.drawImage(image, 0, 0, w, h); stackBlurCanvasRGBA(canvas, 0, 0, w, h, BLUR_RADIUS); }; $('.card canvas').each(function(index){ var canvas = $(this)[0]; var image = new Image(); image.src = sourceImages[index]; image.onload = function() { drawBlur(canvas, image); } }); });

Related: See More


Questions / Comments: