Paceusa

face-api

Jul 31st, 2023
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.09 KB | Source Code | 0 0
  1. <?= $this->extend('layout/dashboard-admin')?>
  2. <?= $this->section('header')?>
  3.  
  4. <?= $this->endSection();?>
  5.  
  6. <?= $this->section('content')?>
  7. <div class="content-wrapper">
  8.   <div class="row">
  9.     <div class="col-sm-12">
  10.       <div class="home-tab">
  11.         <div class="tab-content tab-content-basic">
  12.           <div class="tab-pane fade show active" id="overview" role="tabpanel" aria-labelledby="overview">
  13.             <div class="row">
  14.               <div class="col-lg-17 d-flex flex-column">
  15.                 <div class="row ">
  16.                   <div class="col-17 grid-margin stretch-card">
  17.                     <div class="card card-rounded">
  18.                       <div class="card-body">
  19.                         <div class="d-sm-flex justify-content-center align-items-start">
  20.                           <div>
  21.                             <h4 class="card-title card-title-dash">Generate Data Wajah Mahasiswa</h4>
  22.                           </div>
  23.                         </div>
  24.                         <form action="<?=base_url('admin/mahasiswa/upload');?>" method="post" enctype="multipart/form-data">
  25.                         <?=csrf_field()?>
  26.                         <div class="row">
  27.                           <div class="form-group">
  28.                             <label for="fotowajah">Pas Foto</label>
  29.                             <input name="fotowajah" type="file" class="form-control" id="foto"></input>
  30.                         </div>
  31.                         <div class="row">
  32.                           <div class="form-group">
  33.                             <input name="datawajah" type="text" class="form-control" id="wajah" hidden></input>
  34.                             <input name="nim" type="text" class="form-control" value="<?= $nim?>" hidden></input>
  35.                         </div>
  36.                         <div class="row">
  37.                             <div class="form-group">
  38.                                 <span  class="text-muted">Pastikan foto wajah memiliki pencahayaan yang baik</span>
  39.                             </div>
  40.                         </div>
  41.                         </div>
  42.                         <div class="row">
  43.                           <div class="form-group">
  44.                             <img src="" id="showFoto" alt="" style="height: 300px; width: 200px; display: none;">
  45.                           </div>
  46.                         </div>
  47.                         <div class="row">
  48.                           <div class="form-group">
  49.                             <span id="result"></span>
  50.                           </div>
  51.                         </div>
  52.                         <div class="row">
  53.                           <div class="form-group">
  54.                             <button type="submit" class="btn btn-primary text-white">Simpan</button> &nbsp;
  55.                           </div>
  56.                         </div>
  57.                         </form>
  58.                       </div>
  59.                      
  60.                     </div>
  61.                   </div>
  62.                 </div>
  63.               </div>
  64.             </div>
  65.           </div>
  66.         </div>
  67.       </div>
  68.     </div>
  69.   </div>
  70. </div>
  71.  
  72. <?= $this->endSection()?>
  73.  
  74. <?= $this->section('script')?>
  75. <script>
  76.    // Ambil elemen input file dan elemen gambar
  77.     var uploadInput = document.getElementById('foto');
  78.     var previewImage = document.getElementById('showFoto');
  79.    
  80.     // Tambahkan event listener untuk perubahan pada input file
  81.     uploadInput.addEventListener('change', function(e) {
  82.       // Cek apakah ada file yang diunggah
  83.       if (uploadInput.files && uploadInput.files[0]) {
  84.         // Ambil file yang diunggah
  85.         var file = e.target.files[0];
  86.        
  87.         // Buat objek FileReader
  88.         var reader = new FileReader();
  89.        
  90.         // Setelah file selesai dibaca, tampilkan gambar pada elemen img
  91.         reader.onload = function(e) {
  92.           previewImage.src = e.target.result;
  93.           previewImage.style.display = 'block';
  94.         };
  95.        
  96.         // Baca file sebagai URL data gambar
  97.         reader.readAsDataURL(file);
  98.       } else {
  99.         // Jika tidak ada file yang dipilih, sembunyikan elemen img
  100.         previewImage.style.display = 'none';
  101.       }
  102.     });
  103. </script>
  104. <script src="<?=base_url('js/face-api.min.js')?>"></script>
  105. <script>
  106.     // Inisialisasi face-api.js
  107.     var models = '<?=base_url('models')?>';
  108.     Promise.all([
  109.       faceapi.nets.ssdMobilenetv1.loadFromUri(models),
  110.       faceapi.nets.faceLandmark68Net.loadFromUri(models),
  111.       faceapi.nets.faceRecognitionNet.loadFromUri(models)
  112.     ]).then(start);
  113.    
  114.     function start() {
  115.       // Ambil elemen input file
  116.       var uploadInput = document.getElementById('foto');
  117.       var dataWajah = document.getElementById('wajah');
  118.      
  119.       // Tambahkan event listener untuk perubahan pada input file
  120.       uploadInput.addEventListener('change', async function(e) {
  121.         var showResult = document.getElementById('result');
  122.         // Cek apakah ada file yang diunggah
  123.         if (uploadInput.files && uploadInput.files[0]) {
  124.           // Buat objek FileReader
  125.           var reader = new FileReader();
  126.          
  127.           // Setelah file selesai dibaca, lakukan deteksi wajah
  128.           reader.onload = async function(e) {
  129.             var image = document.createElement('img');
  130.             image.src = e.target.result;
  131.            
  132.             // Deteksi wajah menggunakan face-api.js
  133.             var detections = await faceapi.detectAllFaces(image).withFaceLandmarks().withFaceDescriptors();
  134.            
  135.             // Ambil descriptor wajah dari hasil deteksi
  136.             if (detections.length > 0) {
  137.               var faceDescriptor = detections[0].descriptor;
  138.               dataWajah.value = faceDescriptor;
  139.               showResult.textContent = 'Data Wajah Berhasil Di Generate.';
  140.             } else {
  141.                 showResult.textContent = 'Tidak ada wajah yang terdeteksi.';
  142.             }
  143.           };
  144.          
  145.           // Baca file sebagai URL data gambar
  146.           reader.readAsDataURL(uploadInput.files[0]);
  147.         }
  148.       });
  149.     }
  150.   </script>
  151. <?= $this->endSection()?>
Tags: laravel
Add Comment
Please, Sign In to add comment