Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- require 'vendor/autoload.php';
- use Aws\Rekognition\RekognitionClient;
- use Aws\S3\S3Client;
- const AWS_REGION = '<tu-región>'; // Ejemplo: 'us-east-1'
- const AWS_ACCESS_KEY = '<tu-access-key>';
- const AWS_SECRET_KEY = '<tu-secret-key>';
- const S3_BUCKET = '<tu-bucket>'; // Nombre del bucket
- const REFERENCE_IMAGE = 'reference.jpg'; // Nombre de la imagen de referencia en el bucket
- // Inicializa el cliente de Rekognition
- function getRekognitionClient() {
- return new RekognitionClient([
- 'region' => AWS_REGION,
- 'version' => 'latest',
- 'credentials' => [
- 'key' => AWS_ACCESS_KEY,
- 'secret' => AWS_SECRET_KEY
- ]
- ]);
- }
- // Manejo de la solicitud
- if ($_SERVER['REQUEST_METHOD'] === 'POST') {
- // Verifica si se subió una imagen
- if (!isset($_FILES['image']) || $_FILES['image']['error'] !== UPLOAD_ERR_OK) {
- http_response_code(400);
- echo json_encode(['error' => 'No se subió ninguna imagen válida']);
- exit;
- }
- // Ruta temporal de la imagen subida
- $uploadedImagePath = $_FILES['image']['tmp_name'];
- try {
- // Detectar y comparar rostros
- $isMatch = compareFaces($uploadedImagePath);
- echo json_encode([
- 'success' => true,
- 'match' => $isMatch,
- 'message' => $isMatch ? 'El rostro coincide con el registrado' : 'El rostro no coincide'
- ]);
- } catch (Exception $e) {
- http_response_code(500);
- echo json_encode(['error' => $e->getMessage()]);
- }
- exit;
- }
- // Función para comparar un rostro con la imagen de referencia en S3
- function compareFaces($uploadedImagePath) {
- $rekognition = getRekognitionClient();
- // Leer la imagen cargada
- $uploadedImage = file_get_contents($uploadedImagePath);
- // Realizar la comparación de rostros con AWS Rekognition
- $result = $rekognition->compareFaces([
- 'SourceImage' => [
- 'Bytes' => $uploadedImage, // Imagen subida
- ],
- 'TargetImage' => [
- 'S3Object' => [
- 'Bucket' => S3_BUCKET,
- 'Name' => REFERENCE_IMAGE, // Imagen de referencia en S3
- ],
- ],
- 'SimilarityThreshold' => 90, // Umbral de similitud (90% recomendado)
- ]);
- // Analizar el resultado
- $faceMatches = $result['FaceMatches'];
- return !empty($faceMatches); // Devuelve true si hay coincidencia
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement