File "camcanvas.js"

Full Path: /home/analogde/www/RaspBerry/Dev/CamCanvas-API--master/src/camcanvas.js
File size: 3.28 KB
MIME-type: text/plain
Charset: utf-8

var requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;
window.requestAnimationFrame = requestAnimationFrame;

var v, canvas, gCtx, pixelOperationFunction=passEmboss;
var backBuffer = document.createElement('canvas');
var bCtx = backBuffer.getContext('2d');

function setFunction (fName) { 
	pixelOperationFunction=fName;
} 

function init() {
  v = document.getElementById('v');
  canvas = document.getElementById('c');
  gCtx = canvas.getContext('2d');
  navigator.webkitGetUserMedia({video:true}, callbackStreamIsReady);
}

function callbackStreamIsReady(stream) {
  v.src = URL.createObjectURL(stream);
  v.play();
  window.requestAnimationFrame(draw);
}

function draw() {
  var w = canvas.clientWidth;
  var h = canvas.clientHeight;
  backBuffer.width = w;
  backBuffer.height = h;
  bCtx.drawImage(v, 0, 0, w, h);
  pixelOperationFunction(w,h);
  window.requestAnimationFrame(draw);
}

function passInverse(w,h) { 
   var pixels = bCtx.getImageData(0, 0, w, h);
   var pixelData = pixels.data;
   for (var i = 0; i < pixelData.length; i+=4) { 
     //pixelData.data[i+0]=r;
     var rr = pixelData[i+0];
     var gg = pixelData[i+1];
     var bb = pixelData[i+2];
     var average = parseInt((rr+gg+bb)/3);

     var diffMedia = 255-average; 
     average = diffMedia; 

     pixelData[parseInt(i+0)]=average;
     pixelData[parseInt(i+1)]=average;
     pixelData[parseInt(i+2)]=average;
     pixelData[parseInt(i+3)]=255;
   } 
   pixels.data = pixelData;
   gCtx.putImageData(pixels, 0, 0);
} 

function passGray(w,h) { 
   var pixels = bCtx.getImageData(0, 0, w, h);
   var pixelData = pixels.data;
   for (var i = 0; i < pixelData.length; i+=4) { 
     //pixelData.data[i+0]=r;
     var rr = pixelData[i+0];
     var gg = pixelData[i+1];
     var bb = pixelData[i+2];

     var average = parseInt((rr+gg+bb)/3);
     pixelData[parseInt(i+0)]=average;
     pixelData[parseInt(i+1)]=average;
     pixelData[parseInt(i+2)]=average;
     pixelData[parseInt(i+3)]=255;
   } 
   pixels.data = pixelData;
   gCtx.putImageData(pixels, 0, 0);
} 

function passNormal(w,h) { 
   var pixels = bCtx.getImageData(0, 0, w, h);
   gCtx.putImageData(pixels, 0, 0);
} 
	
function passRed(w,h) { 
   var pixels = bCtx.getImageData(0, 0, w, h);
   var pixelData = pixels.data;
   for (var i = 0; i < pixelData.length; i+=4) { 
     //pixelData.data[i+0]=r;
     pixelData[parseInt(i+1)]=0;
     pixelData[parseInt(i+2)]=0;
     pixelData[parseInt(i+3)]=255;
   } 
   pixels.data = pixelData;
   gCtx.putImageData(pixels, 0, 0);
} 
				
function passEmboss(w,h) { 
   var pixels = bCtx.getImageData(0, 0, w, h);
   var pixelData = pixels.data;
   for (var i = 0; i < pixelData.length; i+=4) { 
     //pixelData.data[i+0]=r;
     var rr = pixelData[i+0];
     var gg = pixelData[i+1];
     var bb = pixelData[i+2];
     var average = parseInt((rr+gg+bb)/3);
     if(i>7) { 
       mOld = pixelData[i-8+0];
       mOld = pixelData[i-8+1];
       mOld = pixelData[i-8+2];
       var diffMedia = 255-average; 
       average = diffMedia; 

       mNew = parseInt((mOld + average )/ 2);

       pixelData[i-8+0]=mNew;
       pixelData[i-8+1]=mNew;
       pixelData[i-8+2]=mNew;
     }
   } 
   pixels.data = pixelData;
   gCtx.putImageData(pixels, 0, 0);
}