src/Controller/PrivateController.php line 30

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\Routing\Annotation\Route;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Bundle\SwiftmailerBundle;
  7. use Google\Cloud\Vision\VisionClient;
  8. use App\Utils\FaceDetect;
  9. use Symfony\Component\HttpFoundation\JsonResponse;
  10. class PrivateController extends AbstractController
  11. {
  12.     /**
  13.      * @Route("/private", name="private")
  14.      */
  15.     public function index()
  16.     {
  17.         $user $this->get('security.token_storage')->getToken()->getUser();
  18.         return $this->render('private/index.html.twig', [
  19.             'controller_name' => 'PrivateController',
  20.         ]);
  21.     }
  22.     
  23.     
  24.         /**
  25.     * @Route("/private/dashboard", name="priv_homepage_dashboard")
  26.     */
  27.     public function indexdashAction(Request $request){
  28.       // dependiendo del usuario
  29.         $user $this->get('security.token_storage')->getToken()->getUser();
  30.         $session=$request->getSession();
  31.       /*
  32.           if ($user->getCanPartner()){
  33.                 return $this->redirectToRoute('priv_index_partners'); 
  34.              } else if ($user->getCanPreinscriptor()) {
  35.                  
  36.                    if ($session->get('modopartner')==1){
  37.            return $this->redirectToRoute('priv_index_partners');
  38.             }else {
  39.            return $this->redirectToRoute('priv_index_preinscriptor'); 
  40.             }
  41.               
  42.                  
  43.              }
  44.         
  45.         
  46.        /*  if ($this->initVariablesAction($request)){
  47.              if ($user->getCanPartner()){
  48.                 return $this->redirectToRoute('priv_index_partners'); 
  49.              }else{
  50.          return $this->redirectToRoute('priv_index_clients');
  51.              }
  52.          } */
  53.         
  54.         
  55.         
  56.         return $this->render('default/index.html.twig', [
  57.             'controller_name' => 'DefaultController',
  58.         ]);
  59. }
  60.    /**
  61.     * @Route("/private/capture/doc", name="priv_capture_doc")
  62.     */
  63.     public function captureDocAction(Request $request){
  64.         
  65.         
  66.         return $this->render('private/captureDoc.html.twig', [
  67.      
  68.         ]); 
  69.         
  70.     }
  71.     
  72.     
  73.     
  74.    /**
  75.     * @Route("/private/compare/face", name="priv_compare_face")
  76.     */
  77.     public function compareFaceAction(Request $request){
  78.         
  79.               $decodedfailed=$request->query->get("decodedfailed");
  80.         $msg=$request->query->get("msg");
  81.         if($decodedfailed!='' && $decodedfailed!=null){
  82.             if ($decodedfailed){
  83.                return $this->render('private/compareFaces.html.twig',  ['failed'=>1,'msg'=>$msg
  84.      
  85.                   ]);  
  86.             }
  87.         }
  88.         return $this->render('private/compareFaces.html.twig', ['failed'=>0
  89.      
  90.         ]); 
  91.         
  92.     }
  93.     
  94.      /**
  95.     * @Route("/private/real/detection", name="priv_reale_time")
  96.     */
  97.     public function tensorFlowAction(Request $request){
  98.         
  99.         $root=$this->getParameter("config_directory");
  100.         $models=$this->getParameter("pathModels");
  101.         return $this->render('tensorFlow/index.html.twig', ['pathModels'=>$root.$models
  102.      
  103.         ]); 
  104.         
  105.     }
  106.     
  107.     
  108.     
  109.        /**
  110.     * @Route("/private/index", name="priv_index")
  111.     */
  112.     public function indexAction(Request $request){
  113.         
  114.         $decodedfailed=$request->query->get("decodedfailed");
  115.         $msg=$request->query->get("msg");
  116.         if($decodedfailed!='' && $decodedfailed!=null){
  117.             if ($decodedfailed){
  118.                return $this->render('private/indexDoc.html.twig', ['failed'=>1,'msg'=>$msg
  119.      
  120.                   ]);  
  121.             }
  122.         }
  123.         
  124.         return $this->render('private/indexDoc.html.twig', ['failed'=>0
  125.      
  126.         ]); 
  127.         
  128.     }
  129.     
  130.      /**
  131.     * @Route("/private/extraction", name="priv_extraction")
  132.     */
  133.     public function extractionAction(Request $request){
  134.         
  135.         
  136.         $em $this->getDoctrine()->getManager();
  137.         $path=$this->getParameter('config_directory');
  138.         $vision = new VisionClient(['keyFile' => json_decode(file_get_contents($this->getParameter("config_directory").$this->getParameter("visual_key")), true)]);
  139.             $file1 $request->files->get('image_original1');
  140.             $file2 $request->files->get('image_original2');
  141.             $typeDoc$request->request->get('typeDoc');
  142.             if ($typeDoc==0){
  143.                 return $this->redirectToRoute('priv_index', array('decodedfailed' => true'msg' => 'Seleccione el tipo de documento'));
  144.             }
  145.             /*  $imgdata4=base64_decode($image4);    
  146.          file_put_contents(__DIR__ . '/feed/' . $imagetoken_BN. ".png", $imgdata1); */
  147.             
  148.       
  149.             if ($file1!='' && $file1!=null && $file2!='' && $file2!=null && ($typeDoc==|| $typeDoc==2)){
  150.              
  151.            $imagetoken1 random_int(1111111999999999);
  152.              $file1->move("uploads/feed",$imagetoken1.'.jpg');
  153.               $imagetoken2 random_int(1111111999999999);
  154.               $file2->move("uploads/feed",$imagetoken2.'.jpg');
  155.             }else if ($file1!='' && $file1!=null && ($typeDoc==|| $typeDoc==4)) {
  156.                
  157.                      $imagetoken1 random_int(1111111999999999);
  158.              $file1->move("uploads/feed",$imagetoken1.'.jpg');
  159.                 
  160.             }else {
  161.              
  162.                    $file1 $request->request->get('image1');
  163.                     $file2 $request->request->get('image2');
  164.                     $imagetoken1 random_int(1111111999999999);
  165.                     $imagetoken2 random_int(1111111999999999);
  166.                     $imgdata1=base64_decode($file1);
  167.                     $imgdata2=base64_decode($file2);
  168.                    if ($imgdata1=='' || $imgdata2==''){
  169.                        if ($typeDoc==|| $typeDoc==2){
  170.                         return $this->redirectToRoute('priv_index', array('decodedfailed' => true'msg' => 'Suba las dos caras del documento por favor'));   
  171.                        }else {
  172.                            if ($typeDoc==&& $imgdata1==''){
  173.                                 return $this->redirectToRoute('priv_index', array('decodedfailed' => true'msg' => 'Suba el anverso del pasaporte')); 
  174.                            }
  175.                        }
  176.                        
  177.                         
  178.                    }
  179.                  //  echo $path."/public/uploads/feed/"; die;
  180.          file_put_contents($path."/public/uploads/feed/"$imagetoken1".jpg"$imgdata1);
  181.                  file_put_contents($path."/public/uploads/feed/"$imagetoken2".jpg"$imgdata2);
  182.                 
  183.             }
  184.             
  185.             if (isset($imagetoken1)){
  186.             $anverso_path=$path."/public/uploads/feed/".$imagetoken1.'.jpg'
  187.             }
  188.             if (isset($imagetoken2)){
  189.               $reverso_path=$path."/public/uploads/feed/".$imagetoken2.'.jpg';
  190.             }
  191.               
  192.               
  193.             if ($typeDoc==|| $typeDoc==2) {
  194.                     $imagenimageProcessing::resizeImageAction('',$anverso_path);
  195.                       $imagen2imageProcessing::resizeImageAction('',$reverso_path);
  196.                         $familyPhotoResource=fopen($imagen'r');  
  197.                      $image $vision->image($familyPhotoResource
  198.                    ['FACE_DETECTION',
  199.                     'IMAGE_PROPERTIES',
  200.                     'LANDMARK_DETECTION',
  201.                         'TEXT_DETECTION'
  202.                    ]);
  203.                $result $vision->annotate($image);
  204.                $faces $result->faces();
  205.                $text $result->text();
  206.                $properties $result->imageProperties();
  207.                //var_dump($result);die;
  208.                $familyPhotoResource2=fopen($imagen2'r');  
  209.                $image $vision->image($familyPhotoResource2
  210.                    ['IMAGE_PROPERTIES',
  211.                     'LANDMARK_DETECTION',
  212.                         'TEXT_DETECTION'
  213.                    ]);
  214.                $result2 $vision->annotate($image); 
  215.                $labels2 $result2->labels();
  216.                $text2 $result2->text();
  217.                $fullText2 $result2->fullText();
  218.                $landmarks2 $result2->landmarks(); 
  219.                
  220.             
  221.                
  222.                if ($text[0]=='' || $text[0]==null || $text2[0]=='' || $text2[0]==null){
  223.                    
  224.                 return $this->redirectToRoute('priv_index', array('decodedfailed' => true));
  225.                }else {
  226.                    $decoded=true;
  227.                }
  228.                $cadenaFront=$text[0]->info()['description']; 
  229.                $cadenaBack=$text2[0]->info()['description']; 
  230.                 
  231.                
  232.                /*
  233.                echo $cadenaFront.'<br>';
  234.                echo $cadenaBack.'<br>';
  235.                */
  236.                $completeText=imageProcessing::decodeTextCompleteAction($text$text2,$typeDoc,$em);
  237.                
  238.                
  239.                           
  240.                if ($completeText['typeDoc']==''){
  241.                    $decoded=false;
  242.                }else {
  243.                    $decoded=true;
  244.                }
  245.                
  246.                
  247.                $faceImage=imageProcessing::getFaceAction($faces$imagen);
  248.                $img=file_get_contents($path.$faceImage);
  249.                $faceImageEncodedbase64_encode($img);
  250.                
  251.                $img1=file_get_contents($imagen);
  252.                  $image1_64=base64_encode($img1);
  253.                    $img2=file_get_contents($imagen2);
  254.                $image2_64=base64_encode($img2);
  255.                $propieties=imageProcessing::getPropietiesAction($properties);
  256.                
  257.                 }else if ($typeDoc==3){
  258.                     
  259.                           $imagenimageProcessing::resizeImageAction('',$anverso_path);
  260.                         $familyPhotoResource=fopen($imagen'r');  
  261.                      $image $vision->image($familyPhotoResource
  262.                    ['FACE_DETECTION',
  263.                     'IMAGE_PROPERTIES',
  264.                     'LANDMARK_DETECTION',
  265.                         'TEXT_DETECTION'
  266.                    ]);
  267.                $result $vision->annotate($image);
  268.                $faces $result->faces();
  269.                $text $result->text();
  270.                $properties $result->imageProperties();
  271.                //var_dump($result);die;
  272.                if ($text[0]=='' || $text[0]==null){
  273.                    
  274.                 return $this->redirectToRoute('priv_index', array('decodedfailed' => true));
  275.                }else {
  276.                    $decoded=true;
  277.                }
  278.                $cadenaFront=$text[0]->info()['description']; 
  279.                /*
  280.                echo $cadenaFront.'<br>';
  281.                echo $cadenaBack.'<br>';
  282.                */
  283.                $completeText=imageProcessing::decodeTextCompleteAction($text,''$typeDoc,$em);
  284.                
  285.                //  $completeText=imageProcessing::decodeTextCompleteAction($text, '', $typeDoc);    
  286.                     
  287.                   $faceImage=imageProcessing::getFaceAction($faces$imagen);
  288.                $img=file_get_contents($path.$faceImage);
  289.                $faceImageEncodedbase64_encode($img);
  290.                
  291.                $img1=file_get_contents($imagen);
  292.                  $image1_64=base64_encode($img1);
  293.                $propieties=imageProcessing::getPropietiesAction($properties);
  294.       
  295.                     
  296.                 }else if ($typeDoc==4){
  297.                       // Carta Verde 
  298.               
  299.                         $imagenimageProcessing::resizeImageAction('',$anverso_path);
  300.                         $familyPhotoResource=fopen($imagen'r');  
  301.                       $image $vision->image($familyPhotoResource
  302.                     [
  303.                      'IMAGE_PROPERTIES',
  304.                          'TEXT_DETECTION'
  305.                     ]);
  306.                 $result $vision->annotate($image);
  307.                 $text $result->text();
  308.               //  var_dump($text[0]); die;
  309.                 $fullText $result->fullText();
  310.                 $properties $result->imageProperties();
  311.                   if ($text[0]=='' || $text[0]==null){
  312.                    
  313.                 return $this->redirectToRoute('priv_index', array('decodedfailed' => true));
  314.                }else {
  315.                    $decoded=true;
  316.                }
  317.                
  318.  ob_start();
  319.                   $completeText=imageProcessing::decodeTextCompleteAction($text''$typeDoc$em);   
  320.                   ob_end_clean();
  321.                $img1=file_get_contents($imagen);
  322.                  $image1_64=base64_encode($img1);
  323.                 $propieties=imageProcessing::getPropietiesAction($properties);
  324.                 
  325.            
  326.                 }
  327.                /* 
  328.            
  329.                if ($completeText['typeDoc']==''){
  330.                    $decoded=false;
  331.                }else {
  332.                    $decoded=true;
  333.                }
  334.                
  335.                
  336.                $faceImage=imageProcessing::getFaceAction($faces, $imagen);
  337.                $img=file_get_contents($path.$faceImage);
  338.                $faceImageEncoded= base64_encode($img);
  339.                
  340.                $img1=file_get_contents($imagen);
  341.                  $image1_64=base64_encode($img1);
  342.                    $img2=file_get_contents($imagen2);
  343.                $image2_64=base64_encode($img2);
  344.                $propieties=imageProcessing::getPropietiesAction($properties);
  345.                 
  346.                 */
  347.                
  348.     if ($decoded){
  349.         
  350.         if ($typeDoc==|| $typeDoc==2) {
  351.           return $this->render('private/resultExtraction.html.twig', ['propieties'=>$propieties,'face'=>$faceImageEncoded,'faces'=>$faces,'text'=>$completeText,'image1'=>$image1_64,
  352.             'image2'=>$image2_64
  353.      
  354.         ]); 
  355.         }else if ($typeDoc==3) {
  356.               return $this->render('private/resultExtractionPassport.html.twig', ['propieties'=>$propieties,'face'=>$faceImageEncoded,'faces'=>$faces,'text'=>$completeText,'image1'=>$image1_64
  357.      
  358.         ]);
  359.             
  360.         }else if ($typeDoc==4) {
  361.               return $this->render('private/resultExtractionCartaVerde.html.twig', ['propieties'=>$propieties,'text'=>$completeText,'image1'=>$image1_64
  362.      
  363.         ]);
  364.             
  365.         }
  366.     }else {
  367.         
  368.         return $this->redirectToRoute('priv_index', array('decodedfailed' => true'msg' => 'Error decode files'));
  369.     }
  370.         
  371.       
  372.         
  373.     }
  374.     
  375.     
  376.       /**
  377.     * @Route("/private/face/compare", name="private_face_compare")
  378.     */
  379.     
  380.     public function faceCompAction(Request $request)
  381.     {
  382.         
  383.           $body $request->getContent();
  384.       $data json_decode($bodytrue);
  385.       $image1=$request->request->get('image1','');
  386.             $image2=$request->request->get('image2','');
  387.       if ($image1!='' && $image2!='')  {
  388.           $path=$this->getParameter('config_directory');
  389.          $imagetoken1 random_int(1111111999999999);
  390.           $imagetoken2 random_int(1111111999999999);
  391.           $imgdata1=base64_decode($image1);
  392.           $imgdata2=base64_decode($image2);
  393.      file_put_contents($path'/public/ocrImages/' $imagetoken1".jpg"$imgdata1);
  394.          file_put_contents($path'/public/ocrImages/' $imagetoken2".jpg"$imgdata2);
  395.          $url1=$this->getParameter('urlToView').$imagetoken1".jpg";
  396.          $url2=$this->getParameter('urlToView').$imagetoken2".jpg";
  397.        $res=FaceDetect::faceCompare2($url1$url2);
  398.        $res=json_decode($res,true);
  399.  
  400.        if (!empty($res['error_message'])){
  401.            $result['error']='Algo ha ido mal';
  402.                 $result['state']='ko';
  403.           $result_json=json_encode($result);
  404.              gc_collect_cycles();
  405.              unlink($path'/public/ocrImages/' $imagetoken1".jpg");
  406.              unlink($path'/public/ocrImages/' $imagetoken2".jpg");
  407.              
  408.      return new  JsonResponse($result_json); 
  409.        }else {
  410.            if (!empty($res['confidence'])){
  411.                
  412.             $result['confidence']=$res['confidence'];
  413.            $result['state']='ok';
  414.           $result_json=json_encode($result);
  415.            }else {
  416.                
  417.                  $result['state']='ko';
  418.            $result['error']='No face detected on one or both images';
  419.           $result_json=json_encode($result);
  420.    
  421.            }
  422.            
  423. // Borrar las imagenes
  424.           gc_collect_cycles();
  425.                     unlink($path'/public/ocrImages/' $imagetoken1".jpg");
  426.              unlink($path'/public/ocrImages/' $imagetoken2".jpg");
  427.              
  428.      return new  JsonResponse($result_json); 
  429.        }
  430.        
  431.       }else{
  432.           
  433.           // Sin imagenes
  434.                 $result['state']='ko';
  435.          $result['error']='No images recivied';
  436.           $result_json=json_encode($result);
  437.      return new  JsonResponse($result_json); 
  438.           
  439.       }
  440.         
  441.     }
  442.     
  443.     
  444.     
  445. }