Advertisement
Fhernd

aws_rekognition.php

Jan 11th, 2025
18
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.45 KB | Source Code | 0 0
  1. <?php
  2.  
  3. require 'vendor/autoload.php';
  4.  
  5. use Aws\Rekognition\RekognitionClient;
  6. use Aws\S3\S3Client;
  7.  
  8. const AWS_REGION = '<tu-región>'; // Ejemplo: 'us-east-1'
  9. const AWS_ACCESS_KEY = '<tu-access-key>';
  10. const AWS_SECRET_KEY = '<tu-secret-key>';
  11. const S3_BUCKET = '<tu-bucket>'; // Nombre del bucket
  12. const REFERENCE_IMAGE = 'reference.jpg'; // Nombre de la imagen de referencia en el bucket
  13.  
  14. // Inicializa el cliente de Rekognition
  15. function getRekognitionClient() {
  16.     return new RekognitionClient([
  17.         'region' => AWS_REGION,
  18.         'version' => 'latest',
  19.         'credentials' => [
  20.             'key' => AWS_ACCESS_KEY,
  21.             'secret' => AWS_SECRET_KEY
  22.         ]
  23.     ]);
  24. }
  25.  
  26. // Manejo de la solicitud
  27. if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  28.     // Verifica si se subió una imagen
  29.     if (!isset($_FILES['image']) || $_FILES['image']['error'] !== UPLOAD_ERR_OK) {
  30.         http_response_code(400);
  31.         echo json_encode(['error' => 'No se subió ninguna imagen válida']);
  32.         exit;
  33.     }
  34.  
  35.     // Ruta temporal de la imagen subida
  36.     $uploadedImagePath = $_FILES['image']['tmp_name'];
  37.  
  38.     try {
  39.         // Detectar y comparar rostros
  40.         $isMatch = compareFaces($uploadedImagePath);
  41.  
  42.         echo json_encode([
  43.             'success' => true,
  44.             'match' => $isMatch,
  45.             'message' => $isMatch ? 'El rostro coincide con el registrado' : 'El rostro no coincide'
  46.         ]);
  47.     } catch (Exception $e) {
  48.         http_response_code(500);
  49.         echo json_encode(['error' => $e->getMessage()]);
  50.     }
  51.     exit;
  52. }
  53.  
  54. // Función para comparar un rostro con la imagen de referencia en S3
  55. function compareFaces($uploadedImagePath) {
  56.     $rekognition = getRekognitionClient();
  57.  
  58.     // Leer la imagen cargada
  59.     $uploadedImage = file_get_contents($uploadedImagePath);
  60.  
  61.     // Realizar la comparación de rostros con AWS Rekognition
  62.     $result = $rekognition->compareFaces([
  63.         'SourceImage' => [
  64.             'Bytes' => $uploadedImage, // Imagen subida
  65.         ],
  66.         'TargetImage' => [
  67.             'S3Object' => [
  68.                 'Bucket' => S3_BUCKET,
  69.                 'Name' => REFERENCE_IMAGE, // Imagen de referencia en S3
  70.             ],
  71.         ],
  72.         'SimilarityThreshold' => 90, // Umbral de similitud (90% recomendado)
  73.     ]);
  74.  
  75.     // Analizar el resultado
  76.     $faceMatches = $result['FaceMatches'];
  77.     return !empty($faceMatches); // Devuelve true si hay coincidencia
  78. }
  79.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement