In the script I have the camera on and then
The Code that the image takes on a canvas.
I see that it returns a base64
I remove ( data:image/jpeg;base64,
) that brings the text.
I'm trying:
The code I have is the following to see what I'm doing wrong:
JavaScript
window.addEventListener('load');
function encender() {
//declara variables
var button = this;
button.innerHTML = 'Tomar Foto';
var video = document.querySelector('#video'),
canvas = document.querySelector('#canvas'),
btn = document.querySelector('#camara'),
img = document.querySelector('#imagen');
//acceso a la camara
navigator.getUserMedia = (
navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia
);
//validar que encontro
if (navigator.getUserMedia) {
//reproduce el video
navigator.getUserMedia({
video: true
}, function(stream) {
video.src = window.URL.createObjectURL(stream); //lee la camara
video.play(); //reproduce el video
}, function(e) {
console.log(e);
})
} else {
alert('No se acepta el video en tu navegador');
}
video.addEventListener('loadedmetadata', function() {
canvas.width = video.videoWidth;
canvas.height = video.videoHeight;
}, false);
btn.addEventListener('click', function(e) {
e.preventDefault();
canvas.getContext('2d').drawImage(video, 0, 0);
var imgData = canvas.toDataURL('image/jpeg');
var imagenData = canvas.toDataURL('image/jpeg');
var imagenData = imagenData.replace(/^data:image\/jpeg;base64,/, "+"); //Quito data:image/jpeg;base64 para convertir imagen
$.ajax({
url: 'saveFile.php',
data: {
imagenData: imagenData
},
method: 'post',
success: function(data) {
alert("Imagen guardada en servidor");
}
});
$("#operation-driver_identification_file").val(imagenData);
img.setAttribute('src', imgData);
});
}
PHP:
<?php $this->registerJsFile("@web/js/camara.js");
?><?=$form->field($model, 'driver_identification_file')->textInput(['disabled'=> true]);
?><?php
/* saveFile.php */
//Obtener variable POST e desemcriptarla
$img=$_POST['imagenData'];
//$img = str_replace('data:image/png;base64,', '', $img); //este cambio en el JS
//$img = str_replace(' ', '+', $img);
$data=base64_decode($img);
$im=imagecreatefromstring($data); //convertir text a imagen
if ($im !==false) {
imagejpeg($im, 'capture/'); //guardar a server
imagedestroy($im); //liberar memoria
echo 'Todo salio bien tu imagen ha sido guardada';
}
else {
echo 'Un error ocurrio al convertir la imagen.';
}
HTML:
<video id="video"></video>
<canvas id="canvas"></canvas><br>
<input type="button" value="Encender" onclick="encender()" />
<button id="camara">Take photo</button>