<?php 
  /** 
   * test a directory, when scan the dir, first get all the image files. 
   * second generate a face crop image for every image file. 
   */ 
  use svay\FaceDetector; 
  use svay\FaceCapture; 
 
  require_once('FaceDetector.php'); 
  require_once('FaceCapture.php'); 
  require_once('Exception/NoFaceException.php'); 
 
 
  set_time_limit(0); 
  //loop dir to get all the files. 
  function getAllFiles($dir) 
  { 
    if (!is_dir($dir)) { 
      return false; 
    } 
    $files = []; 
    readFiles($dir, $files); 
    // var_dump($files); 
    return $files; 
  } 
 
 
  function readFiles($dir, &$files, $imageFileType = ['bmp','jpg','jpeg','gif','png']) 
  { 
    $handle = opendir($dir); 
    while (($file = readdir($handle)) !== false) { 
      if ($file == '.' || $file == '..') 
        continue; 
 
      $filePath = $dir == '.'? $file : $dir.DIRECTORY_SEPARATOR.$file; 
      if (is_link($filePath)) { 
        contiune; 
      } else if (is_dir($filePath)) { 
        readFiles($filePath, $files); 
      } else { 
        $fileType = pathinfo($dir.'/'.$file)['extension']; 
        if (!in_array($fileType, $imageFileType)) { 
          continue; 
        } 
        if (strpos($file, '_cropface')===false) { 
          $files[] = $dir.DIRECTORY_SEPARATOR.$file; 
        } 
      } 
    } 
    closedir($handle); 
  } 
 
 
  $files = []; 
  //test directory 
  $dir = 'OperaHouse'; 
  $listFiles = getAllFiles($dir); 
 
  foreach($listFiles as $key => $file) 
  { 
    try{ 
        $detector = new FaceCapture('detection.dat'); 
        $detector->faceDetect($file); 
        $pathInfo = pathinfo($file); 
        $tempFile  = $pathInfo['dirname'].DIRECTORY_SEPARATOR.$pathInfo['filename'].'_fullface.'.$pathInfo['extension']; 
        $detector->cropFullFace($tempFile , 1.9); 
        $faceWidth = 300; 
        $faceHeight = 400; 
        $newFile = $pathInfo['dirname'] .DIRECTORY_SEPARATOR. $pathInfo['filename'] . '_cropface.'.$pathInfo['extension']; 
        $detector->createDefinedSizeFace($newFile, $faceWidth, $faceHeight); 
        echo "generate crop face file ". htmlentities($newFile)." successfully<br>"; 
        //delete temp file. 
        unlink($tempFile); 
      } catch(Exception $e) { 
          echo htmlentities($file) ." has exception, the detail is ". htmlentities($e->getMessage())."<br>"; 
      } 
  } 
 ?> 
 
 |