Fotoğraflardaki yüzleri ve plakaları bulanıklaştıran REST API

Watermarkly Blur API, görsellerdeki plakaları ve yüzleri otomatik olarak algılar ve bulanıklaştırır.

Yüzleri ve plakaları bulanıklaştıran API

Bu hizmet, AWS altyapısında tamamen barındırılmaktadır ve müşteri dosyalarını yapay zeka modeli eğitimi için kullanmayarak gizliliği garanti eder.
AWS Lambda kullanarak binlerce paralel isteği güvenilir bir şekilde işleyebilir ve hizmeti dünya çapında birçok bölgede sunabiliriz.

Özellikler

  • Görsellerdeki plakaları ve yüzleri otomatik olarak algılar ve bulanıklaştırır.
  • Plakaları kendi proje logonuzla değiştirme seçeneği sunar.
  • İşlenen görselleri isteğe bağlı olarak yeniden boyutlandırabilir, kırpabilir veya dönüştürebilir.
  • Saniyede 500 isteğe kadar destekler.
  • Paralel işlem yaparak daha hızlı performans sunar.
  • Desteklenen maksimum görüntü boyutu: 6000x6000 piksel.

Daha hızlı işlem, daha büyük görüntü desteği veya daha yüksek istek oranı ihtiyacınız varsa, lütfen api-support@watermarkly.com adresinden bizimle iletişime geçin.

API, plakaları şirket logonuzla değiştirmenize olanak tanır.

Yüzleri ve plakaları bulanıklaştıran API

API Uç Noktaları

Bölgeler

Şu anda API’yi iki bölgede sunuyoruz:

Kullanmak için en uygun uç noktayı seçebilirsiniz. AWS bölgesinde bir kesinti olursa ikinci uç noktayı yedek olarak kullanabilirsiniz. API’nin farklı bir bölgede sunulmasını istiyorsanız bize bildirin.

İstek Yöntemleri

Resimleri işlemek için GET veya POST isteklerini kullanabilirsiniz.
Resimleriniz genel olarak erişilebilir durumdaysa, GET isteğini kullanmanızı öneririz çünkü POST isteğinden biraz daha hızlıdır.

GET isteği ile görüntüyü bulanıklaştırma (Önerilen)

GET https://blur-api-eu1.watermarkly.com/blur/?url={image_url}

or

GET https://blur-api-us1.watermarkly.com/blur/?url={image_url}

Hizmet, image_url üzerinden görüntüyü indirir ve işler.

İstek

  • Yöntem: GET
  • URL Sorgu Parametreleri:
    • url (Gerekli): İşlenecek görüntünün tam URL’si.
    • blur_intensity (İsteğe Bağlı): 0.0 ile 20.0 arasında bir değer olup bulanıklık yoğunluğunu ayarlar. Varsayılan: 1.0. 0.0, bulanıklığı devre dışı bırakır.
    • file_size (İsteğe Bağlı): Çıktı dosyasının istenen boyutunu bayt cinsinden belirtir. Hizmet, bu boyutu aşmayan bir görüntü döndürmeye çalışır.
    • width (İsteğe Bağlı): İstenen çıktı görüntü genişliğini belirtir.
    • height (İsteğe Bağlı): İstenen çıktı görüntü yüksekliğini belirtir.
    • format (İsteğe Bağlı): Çıktı görüntüsünün istenen formatını belirtir. Olası değerler: JPEG, PNG, WEBP.
    • logo_url (İsteğe Bağlı): Plakalara yerleştirmek için bir logo dosyasının URL’si. HTTP URL’si veya veri URL’si olabilir. URL’yi istek parametresi olarak iletmeden önce doğru şekilde kodlandığından emin olun.
    • logo_size (İsteğe Bağlı): Logonun boyutunu 0.1 ile 1.0 arasında bir değer olarak belirtir.
    • plate_screws (İsteğe Bağlı): Plakalara vida ekler. Yalnızca logo_url parametresi ile birlikte çalışır.

Yanıt

Başarılı Yanıt: (HTTP Status: 200) Hizmet, işlenmiş görüntüyü aşağıdaki formatlardan birinde döndürür: JPEG, PNG, WEBP.

Hata Yanıtı: (HTTP Status: 500, 403)

{
  "message": "Error message"
}

POST isteği ile görüntüyü bulanıklaştırma

POST https://blur-api-eu1.watermarkly.com/blur/

or

POST https://blur-api-us1.watermarkly.com/blur/

İşlenmek üzere bir görüntü gönderir.

İstek

  • Yöntem: POST
  • Content-Type: application/octet-stream
  • Başlıklar:
    • x-api-key: API anahtarınız
  • Sorgu Parametreleri:
    • blur_intensity (Opsiyonel): 0.0 ile 20.0 arasında bir ondalık değer olup, bulanıklık yoğunluğunu ayarlar. Varsayılan: 1.0. 0.0 değeri bulanıklığı devre dışı bırakır.
    • file_size (Opsiyonel): Çıktı dosyasının istenen boyutunu bayt cinsinden belirtir. Hizmet, bu boyutu aşmayan bir görüntü döndürmeye çalışır.
    • width (Opsiyonel): Çıktı görüntüsünün istenen genişliğini belirtir.
    • height (Opsiyonel): Çıktı görüntüsünün istenen yüksekliğini belirtir.
    • format (Opsiyonel): Çıktı görüntüsünün istenen formatını belirtir. Olası değerler: JPEG, PNG, WEBP.
    • logo_url (Opsiyonel): Plakalara yerleştirilecek logo dosyasının URL’si. HTTP URL veya veri URL’si olabilir. URL’yi parametre olarak iletmeden önce uygun şekilde kodlandığından emin olun.
    • logo_size (Opsiyonel): Logonun boyutunu 0.1 ile 1.0 arasında bir değer olarak belirtir.
    • plate_screws (Opsiyonel): Plakalara vida ekler. Yalnızca logo_url parametresi ile birlikte çalışır.

Yanıt

Başarılı Yanıt: (HTTP Status: 200) Hizmet, işlenmiş görüntüyü aşağıdaki formatlardan birinde döndürür: JPEG, PNG, WEBP.

Hata Yanıtı: (HTTP Status: 500, 403)

{
  "message": "Error message"
}

İşleme Detayları

  • İşlenen görseller sunucularımızda saklanmaz.
  • Hizmet, JPEG, PNG, WEBP, AVIF, HEIC/HEIF formatlarındaki görselleri kabul eder.
  • AVIF ve HEIF görselleri, başka bir format belirtilmediği sürece JPEG formatına dönüştürülür.
  • Maksimum giriş görsel boyutu:
    • GET istekleri: 20MB veya 6000x6000 piksel.
    • POST istekleri: 6MB veya 6000x6000 piksel.
  • API istek limitleri:
    • 500 paralel istek
    • Saniyede 500 istek
    • Günlük 100.000 istek
  • Daha yüksek limitlere ihtiyacınız varsa, lütfen bizimle api-support@watermarkly.com adresinden iletişime geçin.

Güvenlik ve Gizlilik

  • API istekleri bir API anahtarı ile kimlik doğrulama gerektirir.
  • Müşteri dosyaları, yapay zeka modeli eğitimi için kullanılmaz.
  • Tüm işlemler AWS altyapısında gerçekleştirilir. API’yi tercih ettiğiniz bir bölgede ücretsiz olarak dağıtabiliriz.

Kullanım Örnekleri

Python

import requests
import urllib.parse

API_KEY = 'your_api_key'
API_URL = 'https://blur-api-eu1.watermarkly.com/blur/'

input_path = ''       # Local image path
output_path = ''      # Local output path

# Blur image using POST request
with open(input_path, 'rb') as image_file:
    response = requests.post(API_URL, headers={'x-api-key': API_KEY}, data=image_file)
    if response.status_code == 429:
        # API rate limit exceeded, wait a little
        time.sleep(0.1)
        response = requests.post(API_URL, headers={'x-api-key': API_KEY}, data=image_file)
# Save the processed image locally
with open(output_path, 'wb') as f:
    f.write(response.content)


# Blur image using GET request
encoded_url = urllib.parse.quote("https://nikitin.io/eqe.jpg", safe='')
response = requests.get(API_URL + "?url=" + encoded_url, headers={'x-api-key': API_KEY})
# Save the response locally
with open(output_path, 'wb') as f:
    f.write(response.content)

NodeJS

import { promises as fs } from "node:fs";

const API_KEY = 'your_api_key';
const API_URL = 'https://blur-api-eu1.watermarkly.com/blur/';

// Helper function to pause execution for the given number of milliseconds
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));

(async () => {
  // Blur image using POST request
  try {
    const inputPath = 'input_path_here';   // Replace with your actual input path
    const outputPath = 'output_path_here'; // Replace with your actual output path

    // Read image file as binary data asynchronously
    const imageData = await fs.readFile(inputPath);

    let response = await fetch(API_URL, {
      method: 'POST',
      headers: {
        'x-api-key': API_KEY,
        'Content-Type': 'application/octet-stream'
      },
      body: imageData
    });

    if (response.status === 429) {
      // API rate limit exceeded, wait a little
      await sleep(100); // sleep for 0.1 seconds
      response = await fetch(API_URL, {
        method: 'POST',
        headers: {
          'x-api-key': API_KEY,
          'Content-Type': 'application/octet-stream'
        },
        body: imageData
      });
    }
    // Save the processed image locally asynchronously
    const arrayBuffer = await response.arrayBuffer();
    const buffer = Buffer.from(arrayBuffer);
    await fs.writeFile(outputPath, buffer);
  } catch (error) {
    console.error('Error during POST request:', error);
  }

  // Blur image using GET request
  try {
    const outputPath = 'output_path_here'; // Replace with your actual output path
    const encodedUrl = encodeURIComponent("https://nikitin.io/eqe.jpg"); // Encode URL
    const response = await fetch(`${API_URL}?url=${encodedUrl}`, {
      method: 'GET',
      headers: {
        'x-api-key': API_KEY
      }
    });
    // Save the response locally asynchronously
    const arrayBuffer = await response.arrayBuffer();
    const buffer = Buffer.from(arrayBuffer);
    await fs.writeFile(outputPath, buffer);
  } catch (error) {
    console.error('Error during GET request:', error);
  }
})();