示例#1
0
 public function actionUpload()
 {
     $candidateID = intval($_POST['candidateID']);
     $Candidate = Candidates::findOne($candidateID);
     if (!$Candidate) {
         echo 0;
         die;
     }
     $finalDir = '/home/ubuntu/workspace/basic/uploads/' . $Candidate->id;
     if (!is_dir($finalDir)) {
         mkdir($finalDir);
     }
     $CandidatesFiles = new CandidatesFiles();
     $CandidatesFiles->candidate_id = $Candidate->id;
     $CandidatesFiles->original_filename = basename($_FILES['uploadedFile']['name']);
     $CandidatesFiles->server_filename = time() . "_" . $CandidatesFiles->original_filename;
     if (move_uploaded_file($_FILES['uploadedFile']['tmp_name'], $finalDir . "/" . $CandidatesFiles->server_filename)) {
         // HP Store object
         $fileUrl = Url::to('@web/uploads/' . $Candidate->id . '/' . $CandidatesFiles->server_filename, true);
         $CandidatesFiles->hp_reference_id = Yii::$app->HpApi->storeObject($fileUrl);
         $CandidatesFiles->save();
         // Resumes object
         $Resumes = new Resumes();
         $Resumes->candidate_file_id = $CandidatesFiles->id;
         // HP OCR
         $Resumes->hp_job_id = Yii::$app->HpApi->ocrDocument($CandidatesFiles->hp_reference_id);
         $Resumes->save();
         // Resumes faces object
         $ResumesFaces = new ResumesFaces();
         $ResumesFaces->resume_id = $Resumes->id;
         // HP Face Detection
         $ResumesFaces->hp_job_id = Yii::$app->HpApi->faceDetection($CandidatesFiles->hp_reference_id);
         $ResumesFaces->save();
         echo 1;
     } else {
         echo 0;
     }
 }
示例#2
0
 public function getFaceStatus()
 {
     $resumeFacesModel = ResumesFaces::find()->where(array('finished_time' => null))->orderBy('id asc')->one();
     if ($resumeFacesModel) {
         $hpStatus = Yii::$app->HpApi->getStatus($resumeFacesModel->hp_job_id);
         if ($hpStatus['status'] == 'finished') {
             $faceArray = $hpStatus['actions'][0]['result']['face'];
             if (count($faceArray) > 1) {
                 $faceSizeArray = array();
                 for ($ctr = 0; count($faceArray) > $ctr; $ctr++) {
                     $faceSizeArray[$ctr] = $faceArray[$ctr]['width'] * $faceArray[$ctr]['height'];
                 }
                 $faceIndex = array_keys($faceSizeArray, max($faceSizeArray));
                 $face = $faceArray[$faceIndex[0]];
             } else {
                 $face = $faceArray[0];
             }
             $resumeFacesModel->top_position = $face['top'];
             $resumeFacesModel->left_position = $face['left'];
             $resumeFacesModel->width = $face['width'];
             $resumeFacesModel->height = $face['height'];
             $resumeFacesModel->finished_time = new Expression('NOW()');
             if ($face) {
                 try {
                     // Crop the image
                     $imageFilename = $resumeFacesModel->resumes->candidatesFiles->server_filename;
                     $imageFullPath = '/home/ubuntu/workspace/basic/uploads/' . $resumeFacesModel->resumes->candidatesFiles->candidate_id;
                     // Create image instances
                     $src = imagecreatefromjpeg($imageFullPath . '/' . $imageFilename);
                     $dest = imagecreatetruecolor($face['width'], $face['height']);
                     // Copy
                     imagecopy($dest, $src, 0, 0, $face['left'], $face['top'], $face['width'], $face['height']);
                     // Output and free from memory
                     header('Content-Type: image/gif');
                     imagejpeg($dest, $imageFullPath . '/crop_' . $imageFilename);
                     imagedestroy($dest);
                     imagedestroy($src);
                     $resumeFacesModel->save();
                 } catch (Exception $exc) {
                     var_dump($face);
                 }
             }
         }
     }
 }
示例#3
0
 public function getResumesFaces()
 {
     return $this->hasOne(ResumesFaces::className(), ['resume_id' => 'id']);
 }