Trying to capture an image from webcam and wanted save on a drive
Using Grails 2.3.7
script code
var video = document.querySelector("#videoElement");
var imageW;
//check for getUserMedia support
navigator.getUserMedia = navigator.getUserMedia
|| navigator.webkitGetUserMedia
|| navigator.mozGetUserMedia
|| navigator.msGetUserMedia || navigator.oGetUserMedia;
if (navigator.getUserMedia) {
// get webcam feed if available
navigator.getUserMedia({
video : true
}, handleVideo, videoError);
}
function handleVideo(stream) {
video.src = window.URL.createObjectURL(stream);
}
function videoError(e) {
}
var v, canvas, context, w, h;
var imgtag = document.getElementById('imgtag');
var sel = document.getElementById('"avatar"');
document.addEventListener('DOMContentLoaded', function() {
v = document.getElementById('videoElement');
canvas = document.getElementById('canvas');
context = canvas.getContext('2d');
w = canvas.width;
h = canvas.height;
}, false);
function draw(v, c, w, h) {
if (v.paused || v.ended)
return false; // if no video, exit here
context.drawImage(v, 0, 0, w, h); // draw video feed to canvas
var uri = canvas.toDataURL("image/png"); // convert canvas to data URI
imageW = canvas.toDataURL("image/png");
imageW = imageW.replace('data:image/png;base64,', '');
imgtag.src = uri;
}
document.getElementById('save').addEventListener('click',
function(e) {
draw(v, context, w, h);
});
var fr;
sel.addEventListener('change', function(e) {
var f = sel.files[0];
fr = new FileReader();
fr.onload = receivedData;
fr.readAsDataURL(f);
})
function receivedData() {
imgtag.src = fr.result;
}
function webImageSubmit() {
alert(imageW);
var pars = "id=" + $('#id').val() + "&imageW=" + imageW;
$.ajax({
type : 'POST',
url : '/controller_name/saveWebCamImage',
data : pars,
error : function(request, status, error) {
document.getElementById('load').style.visibility = "hidden";
},
beforeSend : function() {
document.getElementById('load').style.visibility = "visible";
},
success : function(data) {
location.reload();
}
});
}
Controller Side :
def encodedData = javax.xml.bind.DatatypeConverter.parseBase64Binary(params.imageW.toString());
def defaultPath = "/images/userImages";
def webRootDir = servletContext.getRealPath("/");
def systemDir = new File(webRootDir, defaultPath);
if (!systemDir.exists()) {
systemDir.mkdirs();
}
String file_name = "webImage.jpg";
def csvFileDir = new File( systemDir, file_name);
new File(systemDir, file_name).withOutputStream {
it.write(encodedData);
};
But image is not saving on drive.
Please Help me.. Thank you..