This page was machine-translated. Spotted a mistake?Help improve it.
Skip to content

Pasaport Fotoğrafı

Yapay zeka destekli pasaport ve kimlik fotoğrafı oluşturucu. İki aşamalı iş akışı: analiz (yüz algılama + arka plan kaldırma) ardından oluşturma (kırpma, yeniden boyutlandırma ve baskı için döşeme).

API Uç Noktaları

Bu araç, analiz ve oluşturma için ayrı uç noktalara sahip iki aşamalı bir akış kullanır.

Model paketleri: background-removal ve face-detection


Aşama 1: Analiz

POST /api/v1/tools/image/passport-photo/analyze

Yüz noktalarını algılar ve arka planı kaldırır. Ön uçun bir kırpma önizlemesi görüntülemesi için nokta verilerini ve bir önizleme döndürür.

Parametreler

ParametreTürZorunluVarsayılanAçıklama
filefileEvet-Görsel dosyası (çok parçalı)
clientJobIdstringHayır-SSE aracılığıyla ilerleme takibi için isteğe bağlı iş kimliği

Örnek İstek

bash
curl -X POST http://localhost:1349/api/v1/tools/image/passport-photo/analyze \
  -F "[email protected]"

Yanıt (200 OK)

json
{
  "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "filename": "headshot.jpg",
  "preview": "<base64-encoded PNG>",
  "previewWidth": 800,
  "previewHeight": 1067,
  "landmarks": {
    "leftEye": { "x": 0.42, "y": 0.35 },
    "rightEye": { "x": 0.58, "y": 0.35 },
    "eyeCenter": { "x": 0.50, "y": 0.35 },
    "chin": { "x": 0.50, "y": 0.65 },
    "forehead": { "x": 0.50, "y": 0.22 },
    "crown": { "x": 0.50, "y": 0.18 },
    "nose": { "x": 0.50, "y": 0.48 },
    "faceCenterX": 0.50
  },
  "imageWidth": 2400,
  "imageHeight": 3200
}

İlerleme (SSE, isteğe bağlı)

clientJobId sağlanırsa, ilerleme akıtılır (yüz algılama için %0-30, arka plan kaldırma için %30-95).

Hata: Yüz Algılanmadı (422)

json
{
  "error": "No face detected",
  "details": "Could not detect a face in the uploaded image. Please upload a clear, front-facing photo with good lighting."
}

Aşama 2: Oluştur

POST /api/v1/tools/image/passport-photo/generate

Fotoğrafı kırpar, yeniden boyutlandırır ve isteğe bağlı olarak bir baskı sayfasına döşer. Aşama 1'den önbelleğe alınmış görselleri kullanır (yapay zeka yeniden çalıştırılmaz).

Parametreler (JSON gövdesi)

ParametreTürZorunluVarsayılanAçıklama
jobIdstringEvet-Aşama 1'den iş kimliği
filenamestringEvet-Aşama 1'den orijinal dosya adı
countryCodestringEvet-Pasaport belirtimi için ülke kodu (örn. US, GB, IN)
documentTypestringHayır"passport"Belge türü (ülke belirtiminden)
bgColorstringHayır"#FFFFFF"Arka plan rengi hex değeri
printLayoutstringHayır"none"Baskı kağıdı yerleşimi: none, 4x6, a4
maxFileSizeKbnumberHayır0KB cinsinden maksimum dosya boyutu kısıtlaması (0 = sınır yok)
dpinumberHayır300Çıktı DPI'ı (72-1200)
customWidthMmnumberHayır-Mm cinsinden özel fotoğraf genişliği (ülke belirtimini geçersiz kılar)
customHeightMmnumberHayır-Mm cinsinden özel fotoğraf yüksekliği (ülke belirtimini geçersiz kılar)
zoomnumberHayır1Yakınlaştırma katsayısı (0.5-3). 1'den büyük değerler daha sıkı kırpar
adjustXnumberHayır0Yatay konum ayarı
adjustYnumberHayır0Dikey konum ayarı
landmarksobjectEvet-Aşama 1 yanıtından noktalar nesnesi
imageWidthnumberEvet-Aşama 1 yanıtından görsel genişliği
imageHeightnumberEvet-Aşama 1 yanıtından görsel yüksekliği

Örnek İstek

bash
curl -X POST http://localhost:1349/api/v1/tools/image/passport-photo/generate \
  -H "Content-Type: application/json" \
  -d '{
    "jobId": "a1b2c3d4-...",
    "filename": "headshot.jpg",
    "countryCode": "US",
    "documentType": "passport",
    "bgColor": "#FFFFFF",
    "printLayout": "4x6",
    "dpi": 300,
    "zoom": 1,
    "adjustX": 0,
    "adjustY": 0,
    "landmarks": { "leftEye": {"x":0.42,"y":0.35}, "rightEye": {"x":0.58,"y":0.35}, "eyeCenter": {"x":0.50,"y":0.35}, "chin": {"x":0.50,"y":0.65}, "forehead": {"x":0.50,"y":0.22}, "crown": {"x":0.50,"y":0.18}, "nose": {"x":0.50,"y":0.48}, "faceCenterX": 0.50 },
    "imageWidth": 2400,
    "imageHeight": 3200
  }'

Yanıt (200 OK)

json
{
  "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "downloadUrl": "/api/v1/download/{jobId}/headshot_passport.jpg",
  "dimensions": {
    "widthMm": 51,
    "heightMm": 51,
    "widthPx": 602,
    "heightPx": 602,
    "dpi": 300
  },
  "spec": {
    "country": "United States",
    "countryCode": "US",
    "documentType": "passport",
    "documentLabel": "Passport"
  },
  "printDownloadUrl": "/api/v1/download/{jobId}/headshot_passport_print_4x6.jpg"
}

Temel Rota

POST /api/v1/tools/image/passport-photo

Doğru alt uç noktanın kullanılmasına yönelik yönlendirme döndürür.

json
{
  "error": "Use /api/v1/tools/image/passport-photo/analyze or /generate"
}

Notlar

  • background-removal ve face-detection model paketlerinin kurulu olmasını gerektirir.
  • Aşama 1 yapay zeka çalıştırır (yüz noktaları + arka plan kaldırma) ve sonuçları önbelleğe alır. Aşama 2 saf Sharp görsel işlemedir (hızlı, yapay zeka gerektirmez).
  • Noktalar, normalleştirilmiş koordinatlar olarak döndürülür (görsel boyutlarına göre 0-1 aralığı).
  • Analiz yanıtındaki preview alanı, hızlı görüntüleme için base64 kodlamalı bir PNG'dir (en fazla 800px genişlik).
  • Ülke belirtimleri, resmi pasaport fotoğrafı gereksinimlerine dayalı belge boyutlarını, baş yüksekliği oranlarını ve göz çizgisi konumlandırmasını içerir.
  • printLayout seçeneği, fotoğraflar arasında 2mm boşlukla 4x6" veya A4 kağıt üzerinde döşenmiş bir sayfa oluşturur.
  • maxFileSizeKb ayarlandığında, çıktı boyut sınırına sığacak şekilde yinelemeli olarak sıkıştırılır.