$(document).ready(function () { //https://medium.com/swlh/how-to-access-webcam-and-take-picture-with-javascript-b9116a983d78 const webcamElement = document.getElementById('webcam'); const canvasElement = document.getElementById('canvas'); const snapSoundElement = document.getElementById('snapSound'); const webcam = new Webcam(webcamElement, 'user', canvasElement, snapSoundElement); $('#live_endocscopy_link').on('click', function(){ if ($('#live_endocscopy_link').hasClass('active')) { webcam.start() .then(result =>{ console.log("webcam started"); $('#take_picture').focus(); }) .catch(err => { console.log(err); }); } }); $(document).keypress(function(event){ if ($('#live_endocscopy_link').hasClass('active')) { take_picture(); } }); $('#take_picture').on('click', function(){ take_picture(); }) $('.nav-link').on('click', function(){ if ($(this).attr('id') != 'live_endocscopy_link') webcam.stop() }); function makeblob(dataURL) { var BASE64_MARKER = ';base64,'; if (dataURL.indexOf(BASE64_MARKER) == -1) { var parts = dataURL.split(','); var contentType = parts[0].split(':')[1]; var raw = decodeURIComponent(parts[1]); return new Blob([raw], { type: contentType }); } var parts = dataURL.split(BASE64_MARKER); var contentType = parts[0].split(':')[1]; var raw = window.atob(parts[1]); var rawLength = raw.length; var uInt8Array = new Uint8Array(rawLength); for (var i = 0; i < rawLength; ++i) { uInt8Array[i] = raw.charCodeAt(i); } return new Blob([uInt8Array], { type: contentType }); } function loadWOrec(from, blob){ $('#start_rec').attr("disabled", true); $('#save_picture').attr("disabled", true); $('#request_waiting').show(); $('#progress_text').html('Загрузка снимков'); var organ = 0 if($('#btnradio_ear').is(":checked")) organ = 1 if($('#btnradio_throat').is(":checked")) organ = 2 if($('#btnradio_nose').is(":checked")) organ = 3 var fileList = document.getElementById('file_input').files; var formData = new FormData(); var poll = null; var i = 0 if (from == 'source') for(i=0;i 0) { $.ajax({ type:'POST', data: formData, url: '/upload_images', processData: false, // tell jQuery not to process the data contentType: false, // tell jQuery not to set contentType success: (data) => { // $('#photos').empty(); // $('#imgs_preview').empty(); // $('#file_input').val(null); $('#pre_load').show(); $('#file-input-greenspan').html(''); $('#start_rec').attr("disabled", false); $('#save_picture').attr("disabled", false); $('#request_waiting').hide(); for(fnum in data['files']) $('#photos').append('
') }, error:function (jqXHR, exception) { $('#start_rec').attr("disabled", false); $('#save_picture').attr("disabled", false); $('#request_waiting').hide(); // after_error(); } }); } else { $('#start_rec').attr("disabled", false); $('#save_picture').attr("disabled", false); $('#request_waiting').hide(); // after_error(); } } function take_picture(){ let picture = webcam.snap(); // $('#download-photo').attr('src', picture); // $('#download').attr('href', picture); if($('#eleps').is(':checked')) loadWOrec('webcam', picture); else $('#photos').append('
') $('.remove-picture').on('click', function(){ $(this).parent().remove(); }) } $('.remove-picture').on('click', function(){ $(this).parent.remove(); }) });