REST-API. Gesichter und Nummernschilder in Fotos unkenntlich machen
Die Watermarkly Blur API erkennt automatisch Gesichter und Nummernschilder in Bildern und macht sie unkenntlich. Sie läuft vollständig auf AWS-Infrastruktur und legt höchsten Wert auf Datenschutz – Ihre Dateien werden niemals zum Trainieren von KI-Modellen verwendet.
Wir verwenden AWS Lambda, um Tausende von Anfragen parallel zu verarbeiten und so zuverlässige Leistung und Verfügbarkeit in mehreren Regionen weltweit sicherzustellen.
Wir vertreiben die API über den AWS Marketplace. Kosten: $0.01 / Anfrage. Es gibt eine kostenlose 7-tägige Testversion.
Hauptfunktionen
✓ Erkennt und macht Nummernschilder und Gesichter in Bildern automatisch unkenntlich
✓ Optionaler Ersatz von Nummernschildern durch Ihr Projekt- oder Firmenlogo
✓ Kann verarbeitete Bilder skalieren, zuschneiden oder konvertieren
✓ Unterstützt bis zu 500 Anfragen pro Sekunde
✓ Parallele Bildverarbeitung für schnellere Leistung
✓ Maximal unterstützte Bildgröße: 6000 × 6000 Pixel
✓ API-Anfragen erfordern eine Authentifizierung per API-Schlüssel
Wenn Sie eine schnellere Verarbeitung, Unterstützung für größere Bilder oder eine höhere Anfragerate benötigen, kontaktieren Sie uns bitte unter api-support@watermarkly.com.
Beispiele für die Ausgabe
Das Gesicht der Frau und das Nummernschild sind unkenntlich gemacht.
Das Nummernschild wurde durch das Firmenlogo ersetzt, das Gesicht der Frau ist unkenntlich gemacht.
Wir vertreiben die API über den AWS Marketplace. Kosten: $0.01 / Anfrage. Es gibt eine kostenlose 7-tägige Testversion.
Verarbeitungsdetails
- Verarbeitete Bilder werden nicht auf unseren Servern gespeichert.
- Der Dienst akzeptiert Bilder in den Formaten JPEG, PNG, WEBP, AVIF, HEIC/HEIF.
- AVIF- und HEIF-Bilder werden in JPEG konvertiert, sofern kein anderes Format angegeben ist.
- Maximale Eingabebildgröße:
- GET-Anfragen: 20MB oder 6000x6000 Pixel
- POST-Anfragen: 6MB oder 6000x6000 Pixel
- API-Anfragelimits:
- 500 parallele Anfragen
- 500 Anfragen pro Sekunde
- 100.000 Anfragen pro Tag
API-Endpunkte
Regionen
Derzeit bieten wir die API in zwei Regionen an:
- Europa: https://blur-api-eu1.watermarkly.com/ (eu-north-1)
- Vereinigte Staaten: https://blur-api-us1.watermarkly.com/ (us-east-2)
Sie können das für Sie bequemere Endpunkt verwenden. Der zweite Endpunkt kann als Fallback genutzt werden, falls eine einzelne AWS-Region ausfällt. Falls Sie die API in einer anderen Region benötigen, lassen Sie es uns bitte wissen.
Anfragemethoden
Sie können Bilder zur Verarbeitung entweder über GET oder POST-Anfragen senden.
Falls Ihre Bilder öffentlich zugänglich sind, empfehlen wir die Verwendung von GET-Anfragen, da sie etwas schneller sind als POST-Anfragen.
Bild mit GET-Anfrage verwischen (Empfohlen)
GET https://blur-api-eu1.watermarkly.com/blur/?url={image_url}
or
GET https://blur-api-us1.watermarkly.com/blur/?url={image_url}
Der Dienst lädt das Bild von der image_url
herunter und verarbeitet es.
Anfrage
- Methode: GET
- URL-Abfrageparameter:
url
(Erforderlich): Die vollständige URL des zu verarbeitenden Bildes.blur_intensity
(Optional): Ein Gleitkommawert zwischen 0,0 und 20,0, der die Unschärfeintensität anpasst. Standard: 1,0. 0,0 deaktiviert die Unschärfe.file_size
(Optional): Gibt die gewünschte Ausgabedateigröße in Byte an. Der Dienst versucht, ein Bild bereitzustellen, das diese Größe nicht überschreitet.width
(Optional): Gibt die gewünschte Ausgabe-Bildbreite an.height
(Optional): Gibt die gewünschte Ausgabe-Bildhöhe an.format
(Optional): Gibt das gewünschte Ausgabe-Bildformat an. Mögliche Werte: JPEG, PNG, WEBP.logo_url
(Optional): Die URL einer Logodatei, die auf Kennzeichen platziert werden soll. Kann eine HTTP-URL oder eine Daten-URL sein. Stellen Sie sicher, dass die URL vor der Übertragung als Anfrageparameter korrekt codiert ist.logo_size
(Optional): Gibt die Logo-Größe als Zahl zwischen 0,1 und 1,0 an.plate_screws
(Optional): Fügt Schrauben zu Kennzeichen hinzu. Funktioniert nur zusammen mit dem logo_url-Parameter.
Antwort
Erfolgreiche Antwort: (HTTP Status: 200) Der Dienst gibt das verarbeitete Bild in einem der folgenden Formate zurück: JPEG, PNG, WEBP.
Fehlermeldung: (HTTP Status: 500, 403)
{
"message": "Error message"
}
Bild mit POST-Anfrage verwischen
POST https://blur-api-eu1.watermarkly.com/blur/
or
POST https://blur-api-us1.watermarkly.com/blur/
Reicht ein Bild zur Verarbeitung ein.
Anfrage
- Methode:
POST
- Content-Type:
application/octet-stream
- Headers:
x-api-key
: Ihr API-Schlüssel
- Query-Parameter:
blur_intensity
(Optional): Ein Float-Wert zwischen 0,0 und 20,0, der die Unschärfeintensität anpasst. Standardwert: 1,0. Der Wert 0,0 deaktiviert die Unschärfe.file_size
(Optional): Gibt die gewünschte Dateigröße der Ausgabe in Byte an. Der Dienst versucht, ein Bild zurückzugeben, das diese Größe nicht überschreitet.width
(Optional): Gibt die gewünschte Breite des Ausgabebildes an.height
(Optional): Gibt die gewünschte Höhe des Ausgabebildes an.format
(Optional): Gibt das gewünschte Bildformat an. Mögliche Werte: JPEG, PNG, WEBP.logo_url
(Optional): Die URL einer Logodatei, die auf Nummernschildern platziert werden soll. Kann eine HTTP-URL oder eine Daten-URL sein. Stellen Sie sicher, dass die URL ordnungsgemäß codiert ist, bevor Sie sie als Anfrageparameter übergeben.logo_size
(Optional): Gibt die Größe des Logos als Wert zwischen 0,1 und 1,0 an.plate_screws
(Optional): Fügt Schrauben zu den Nummernschildern hinzu. Funktioniert nur in Kombination mit dem Parameter logo_url.
Antwort
Erfolgreiche Antwort: (HTTP Status: 200) Der Dienst gibt das verarbeitete Bild in einem der folgenden Formate zurück: JPEG, PNG, WEBP.
Fehlermeldung: (HTTP Status: 500, 403)
{
"message": "Error message"
}
Verarbeitungsdetails
- Verarbeitete Bilder werden nicht auf unseren Servern gespeichert.
- Der Dienst akzeptiert Bilder in den Formaten JPEG, PNG, WEBP, AVIF, HEIC/HEIF.
- AVIF- und HEIF-Bilder werden in JPEG konvertiert, sofern kein anderes Format angegeben ist.
- Maximale Eingangsbildgröße:
- GET-Anfragen: 20MB oder 6000x6000 Pixel.
- POST-Anfragen: 6MB oder 6000x6000 Pixel.
- API-Ratenbeschränkungen:
- 500 parallele Anfragen
- 500 Anfragen pro Sekunde
- 100.000 Anfragen pro Tag
- Falls Sie höhere Limits benötigen, kontaktieren Sie uns bitte unter api-support@watermarkly.com.
Sicherheit und Datenschutz
- API-Anfragen erfordern eine Authentifizierung mittels eines API-Schlüssels.
- Kundendateien werden nicht für das Training von KI-Modellen verwendet.
- Die gesamte Verarbeitung erfolgt auf AWS-Infrastruktur. Wir können die API kostenlos in einer Region Ihrer Wahl bereitstellen.
Anwendungsbeispiele
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);
}
})();