MOVE THE MOUSE OVER THE CANVAS PROCESSOR INTENSIVE: WORKS ONLY IN THE SERVER ON FIREFOX <script> var vid = new Image(); var canvas, context; var vw, vh; var R, G, B, A; var imageData, data, pixwidth; var x, y; var stage, mouseX, mouseY, dh, dv, dm ; function init() { vid = document.getElementById('vid'); canvas = document.getElementById('myCanvas'); context = canvas.getContext('2d'); canvas.addEventListener("mousemove", mouseCoords, false); vw = 300; vh = 300; return setInterval(drawVid, 20); } function mouseCoords(event) { stage = canvas.getBoundingClientRect(); mouseX = event.clientX - stage.left; // this is in case you position canvas using css mouseY = event.clientY - stage.top; // document.getElementById('display').innerHTML = "Mouse Position: " + mouseX + ", " + mouseY; } function drawVid() { context.drawImage(vid,0,0,vw,vh); imageData = context.getImageData(0, 0, vw, vh); data = imageData.data; pixwidth = 5; context.clearRect(0,0,canvas.width, canvas.height); for (y = 0; y < vh; y+=pixwidth) { // ROWS for (x = 0; x < vw; x+=pixwidth) { // COLUMNS ////////// MOUSE DISTANCE dh = Math.pow(mouseX - x, 2); dv = Math.pow(mouseY - y, 2); dm = Math.sqrt(dh+dv); ///////// COLORS R = data[((vw * y) + x) * 4]; G = data[((vw * y) + x) * 4 + 1]; B = data[((vw * y) + x) * 4 + 2]; A = data[((vw * y) + x) * 4 + 3]; context.beginPath(); //context.arc(x+pixwidth, y+pixwidth, pixwidth/2, 0, Math.PI*2, true); context.rect(vw/2+ x+pixwidth/2 + dm/10, vh/2+y+pixwidth/2 -dm/10, pixwidth, pixwidth); context.fillStyle = 'rgba('+(R)+','+(G)+','+(B)+','+(A)+')'; context.fill(); context.lineWidth = 1; context.strokeStyle = 'black'; context.stroke(); context.closePath(); } } } </script> <meta charset="UTF-8"> </head> <body onload="init()" > <canvas id="myCanvas" width="610" height="610" ></canvas> <div id="display"></div> <video id="vid" loop autoplay width="480" height="320" style="display: none;" > <source src="vid/movie.webm" type="video/webm"> <source src="vid/movie.ogv" type="video/ogg"> <source src="vid/movie.mp4" type="video/mp4"> </video>