var loadModels = async () => { await Promise.all([ faceapi.nets.ssdMobilenetv1.loadFromUri("\\weights\\"), faceapi.nets.faceRecognitionNet.loadFromUri("\\weights\\"), faceapi.nets.faceLandmark68Net.loadFromUri("\\weights\\") ]); }; loadModels(); $(document).ready(function () { if ($(window).width() > 992) { $('#desktopDisplay').show(); $('#mobileDisplay').hide(); $('#mobileDisplay').html(''); } if ($(window).width() <= 992) { $('#desktopDisplay').html(''); $('#desktopDisplay').hide(); $('#mobileDisplay').show(); } $(document).on('click', '.upload-image1', function () { $('.md-modal').addClass('md-show'); $('.take_snapshot1').show(); $('.take_snapshot2').hide(); startCamera(); }); $(document).on('click', '.upload-image2', function () { $('.md-modal').addClass('md-show'); $('.take_snapshot1').hide(); $('.take_snapshot2').show(); startCamera(); }); $(document).on('click', '.camera_close', function () { $('.md-modal').removeClass('md-show'); stopCamera(); }); updateSaveButton(); }); //window.onload = async () => { // await loadModels(); // modelsLoaded = true; //}; var modelsLoaded = false; //var ensureModelsLoaded = async () => { // if (!modelsLoaded) { // await loadModels(); // modelsLoaded = true; // } //}; var updateSaveButton = () => { if (!hasErrorPic1 && checkFace1 && !hasErrorPic2 && checkFace2) { $('#SaveImageEmployee').removeClass('disable'); } else { $('#SaveImageEmployee').addClass('disable'); } }; var runCheckFace1 = async () => { const img1 = document.getElementById('pic1'); const detectionPromise1 = await faceapi.detectAllFaces(img1).withFaceLandmarks().withFaceDescriptors(); if (detectionPromise1.length === 1) { console.log('یک چهره در تصویر اول شناسایی شد'); checkFace1 = true; hasErrorPic1 = false; $('#demoResult1').css('border', '2px dashed #148b8b'); } else if (detectionPromise1.length > 1) { $('.alert-msg').show(); $('.alert-msg p').text('بیش از یک چهره در تصویر اول شناسایی شد'); setTimeout(function () { $('.alert-msg').hide(); $('.alert-msg p').text(''); }, 4000); hasErrorPic1 = true; $('#SaveImageEmployee').addClass('disable'); $('.upload-image1').css('background', '#ff090940'); $('#demoResult1').css('border', '2px dashed #ff5c5c'); } else { $('.alert-msg').show(); $('.alert-msg p').text('چهرهای در تصویر اول شناسایی نشد'); setTimeout(function () { $('.alert-msg').hide(); $('.alert-msg p').text(''); }, 4000); hasErrorPic1 = true; $('#SaveImageEmployee').addClass('disable'); $('.upload-image1').css('background', '#ff090940'); $('#demoResult1').css('border', '2px dashed #ff5c5c'); } updateSaveButton(); $('#loadingImage1').hide(); }; var runCheckFace2 = async () => { const img2 = document.getElementById('pic2'); const detectionPromise2 = await faceapi.detectAllFaces(img2).withFaceLandmarks().withFaceDescriptors(); if (detectionPromise2.length === 1) { console.log('یک چهره در تصویر دوم شناسایی شد'); checkFace2 = true; hasErrorPic2 = false; $('#demoResult2').css('border', '2px dashed #148b8b'); } else if (detectionPromise2.length > 1) { $('.alert-msg').show(); $('.alert-msg p').text('بیش از یک چهره در تصویر دوم شناسایی شد'); setTimeout(function () { $('.alert-msg').hide(); $('.alert-msg p').text(''); }, 4000); hasErrorPic2 = true; $('#SaveImageEmployee').addClass('disable'); $('.upload-image2').css('background', '#ff090940'); $('#demoResult2').css('border', '2px dashed #ff5c5c'); } else { $('.alert-msg').show(); $('.alert-msg p').text('چهرهای در تصویر دوم شناسایی نشد'); setTimeout(function () { $('.alert-msg').hide(); $('.alert-msg p').text(''); }, 4000); hasErrorPic2 = true; $('#SaveImageEmployee').addClass('disable'); $('.upload-image2').css('background', '#ff090940'); $('#demoResult2').css('border', '2px dashed #ff5c5c'); } updateSaveButton(); $('#loadingImage2').hide(); }; var FACING_MODES = JslibHtml5CameraPhoto.FACING_MODES; var IMAGE_TYPES = JslibHtml5CameraPhoto.IMAGE_TYPES; // Check if videoElement is already declared to avoid redeclaration // if (typeof videoElement === 'undefined') { var videoElement = document.getElementById('videoElement'); var cameraPhoto = new JslibHtml5CameraPhoto.default(videoElement); // } function startCamera() { // startCameraMaxResolution cameraPhoto.startCamera(FACING_MODES.USER).then(() => { console.log('Camera started!'); }).catch((error) => { console.log(error); console.error('Camera not started!', error); }); } function stopCamera() { cameraPhoto.stopCamera().then(() => { console.log('Camera stopped!'); }).catch((error) => { console.log('No camera to stop!:', error); }); } function cropAndResizeImage(base64Str, newWidth, newHeight) { return new Promise((resolve) => { let img = new Image(); img.src = base64Str; img.onload = () => { let canvas = document.createElement('canvas'); let ctx = canvas.getContext('2d'); let sideLength = Math.min(img.width, img.height); let startX = (img.width - sideLength) / 2; let startY = (img.height - sideLength) / 2; canvas.width = newWidth; canvas.height = newHeight; ctx.drawImage(img, startX, startY, sideLength, sideLength, 0, 0, newWidth, newHeight); resolve(canvas.toDataURL('image/jpeg')); }; }); } function take_snapshot1() { $('#SaveImageEmployee').addClass('disable'); var sizeFactor = 1; var imageType = IMAGE_TYPES.JPG; var imageCompression = 1; var config = { sizeFactor, imageType, imageCompression }; var dataUri = cameraPhoto.getDataUri(config); cropAndResizeImage(dataUri, 1800, 1800).then((resizedDataUri) => { document.getElementById('result1').innerHTML = ''; document.getElementById('demoResult1').innerHTML = '