Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- require 'vendor/autoload.php';
- use GuzzleHttp\Client;
- const AZURE_FACE_API_ENDPOINT = 'https://<tu-endpoint-face-api>.cognitiveservices.azure.com/face/v1.0';
- const AZURE_FACE_API_KEY = '<tu-api-key>';
- // Recibe y procesa la solicitud
- if ($_SERVER['REQUEST_METHOD'] === 'POST') {
- // Verificar si se ha subido un archivo
- 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'];
- // Ruta de la imagen de referencia
- $referenceImagePath = __DIR__ . '/storage/reference.jpg';
- try {
- // 1. Detectar rostros en la imagen subida
- $uploadedFaceId = detectFace($uploadedImagePath);
- // 2. Detectar rostros en la imagen de referencia
- $referenceFaceId = detectFace($referenceImagePath);
- // 3. Comparar ambos rostros
- $isMatch = compareFaces($uploadedFaceId, $referenceFaceId);
- // Respuesta del endpoint
- 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 detectar un rostro en una imagen y obtener su Face ID
- function detectFace($imagePath) {
- $client = new Client();
- $url = AZURE_FACE_API_ENDPOINT . '/detect';
- // Realiza la solicitud POST a la API de Azure Face
- $response = $client->post($url, [
- 'headers' => [
- 'Ocp-Apim-Subscription-Key' => AZURE_FACE_API_KEY,
- 'Content-Type' => 'application/octet-stream',
- ],
- 'body' => file_get_contents($imagePath),
- 'query' => [
- 'returnFaceId' => 'true'
- ]
- ]);
- $result = json_decode($response->getBody(), true);
- if (empty($result) || !isset($result[0]['faceId'])) {
- throw new Exception('No se detectaron rostros en la imagen');
- }
- return $result[0]['faceId'];
- }
- // Función para comparar dos Face IDs
- function compareFaces($faceId1, $faceId2) {
- $client = new Client();
- $url = AZURE_FACE_API_ENDPOINT . '/verify';
- // Realiza la solicitud POST a la API de Azure Face para comparar los rostros
- $response = $client->post($url, [
- 'headers' => [
- 'Ocp-Apim-Subscription-Key' => AZURE_FACE_API_KEY,
- 'Content-Type' => 'application/json',
- ],
- 'json' => [
- 'faceId1' => $faceId1,
- 'faceId2' => $faceId2
- ]
- ]);
- $result = json_decode($response->getBody(), true);
- if (isset($result['isIdentical']) && $result['isIdentical'] === true) {
- return true;
- }
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement