REST API. Fotoğraflardaki Yüzleri ve Plaka Numaralarını Bulanıklaştırın
Watermarkly Blur API, görsellerdeki yüzleri ve plaka numaralarını otomatik olarak algılar ve bulanıklaştırır. Tamamen AWS altyapısında çalışır ve gizliliği ön planda tutar - dosyalarınız asla yapay zeka modellerini eğitmek için kullanılmaz.
Binlerce isteği paralel olarak işleyebilen AWS Lambda altyapısını kullanıyoruz; bu da dünya genelinde güvenilir performans ve erişilebilirlik sağlar.
API’yi AWS Marketplace üzerinden satıyoruz. Maliyet: $0.01 / istek. 7 günlük ücretsiz deneme seçeneği mevcuttur.
Ana Özellikler
✓ Görsellerdeki plaka ve yüzleri otomatik olarak algılar ve bulanıklaştırır
✓ Plakaları isteğe bağlı olarak proje veya şirket logonuzla değiştirebilir.
✓ İşlenen görselleri yeniden boyutlandırabilir, kırpabilir veya dönüştürebilir.
✓ Saniyede 500 isteğe kadar destekler.
✓ Daha hızlı performans için görselleri paralel olarak işler.
✓ Desteklenen maksimum görsel boyutu: 6000 × 6000 piksel.
✓ API istekleri bir API anahtarı ile kimlik doğrulaması gerektirir.
Daha hızlı işleme, daha büyük görseller için destek veya daha yüksek istek sınırı gerekiyorsa, lütfen api-support@watermarkly.com adresinden bizimle iletişime geçin.
Çıktı Örnekleri
Kadının yüzü ve plaka bulanıklaştırılmıştır.
Plaka şirketin logosuyla değiştirilmiş ve kadının yüzü bulanıklaştırılmıştır.
API’yi AWS Marketplace üzerinden satıyoruz. Maliyet: $0.01 / istek. 7 günlük ücretsiz deneme seçeneği mevcuttur.
İşleme Detayları
- İşlenen görseller sunucularımızda depolanmaz.
- Servis, JPEG, PNG, WEBP, AVIF, HEIC/HEIF formatlarında görselleri kabul eder.
- AVIF ve HEIF görseller, başka bir format belirtilmediği sürece JPEG’e 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 sınırları:
- 500 paralel istek
- Saniyede 500 istek
- Günde 100.000 istek
API Uç Noktaları
Bölgeler
Şu anda API’yi iki bölgede sunuyoruz:
- Avrupa: https://blur-api-eu1.watermarkly.com/ (eu-north-1)
- Amerika Birleşik Devletleri: https://blur-api-us1.watermarkly.com/ (us-east-2)
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);
}
})();