REST API. Vervaag Gezichten en Kentekenplaten op Foto’s
De Watermarkly Blur API detecteert en vervaagt automatisch gezichten en kentekenplaten op afbeeldingen. De API draait volledig op AWS-infrastructuur en stelt privacy voorop – jouw bestanden worden nooit gebruikt om AI-modellen te trainen.
We gebruiken AWS Lambda om duizenden verzoeken parallel te verwerken, wat zorgt voor betrouwbare prestaties en beschikbaarheid in meerdere regio’s wereldwijd.
We verkopen de API via de AWS Marketplace. Kosten: $0.01 / verzoek. Er is een gratis proefperiode van 7 dagen beschikbaar.
Belangrijkste Functies
✓ Detecteert en vervaagt automatisch kentekenplaten en gezichten op afbeeldingen
✓ Kentekenplaten kunnen optioneel worden vervangen door het logo van jouw project of bedrijf.
✓ Kan bewerkte afbeeldingen schalen, bijsnijden of converteren.
✓ Ondersteunt tot 500 verzoeken per seconde.
✓ Verwerkt afbeeldingen parallel voor snellere prestaties.
✓ Maximale ondersteunde afbeeldingsgrootte: 6000 × 6000 pixels.
✓ API-verzoeken vereisen authenticatie via een API-sleutel.
Als je snellere verwerking, ondersteuning voor grotere afbeeldingen of een hoger aantal verzoeken nodig hebt, neem dan contact met ons op via api-support@watermarkly.com.
Voorbeelden van Resultaten
Het gezicht van de vrouw en de kentekenplaat zijn vervaagd.
De kentekenplaat is vervangen door het bedrijfslogo en het gezicht van de vrouw is vervaagd.
We verkopen de API via de AWS Marketplace. Kosten: $0.01 / verzoek. Er is een gratis proefperiode van 7 dagen beschikbaar.
Verwerkingsdetails
- Verwerkte afbeeldingen worden niet opgeslagen op onze servers.
- De service accepteert afbeeldingen in JPEG-, PNG-, WEBP-, AVIF-, HEIC/HEIF-formaten.
- AVIF- en HEIF-afbeeldingen worden geconverteerd naar JPEG tenzij een ander formaat is opgegeven.
- Maximale invoergrootte van afbeeldingen:
- GET-verzoeken: 20MB of 6000x6000 pixels.
- POST-verzoeken: 6MB of 6000x6000 pixels.
- API-verzoeklimieten:
- 500 parallelle verzoeken
- 500 verzoeken per seconde
- 100.000 verzoeken per dag
API Eindpunten
Regio’s
Momenteel bieden we de API aan in twee regio’s:
- Europa: https://blur-api-eu1.watermarkly.com/ (eu-north-1)
- Verenigde Staten: https://blur-api-us1.watermarkly.com/ (us-east-2)
Je kunt het eindpunt gebruiken dat voor jou het handigst is. Het tweede eindpunt kan worden gebruikt als back-up voor het geval een AWS-regio uitvalt. Als je de API in een andere regio nodig hebt, laat het ons weten.
Verzoekmethoden
Je kunt afbeeldingen verwerken met GET of POST-verzoeken.
Als je afbeeldingen openbaar toegankelijk zijn, raden we GET-verzoeken aan, omdat deze iets sneller zijn dan POST-verzoeken.
Afbeelding vervagen met een GET-verzoek (Aanbevolen)
GET https://blur-api-eu1.watermarkly.com/blur/?url={image_url}
or
GET https://blur-api-us1.watermarkly.com/blur/?url={image_url}
De service downloadt de afbeelding van image_url
en verwerkt deze.
Verzoek
- Methode: GET
- URL-queryparameters:
url
(Vereist): De volledige URL van de afbeelding die moet worden verwerkt.blur_intensity
(Optioneel): Een drijvendekommagetal tussen 0.0 en 20.0 dat de intensiteit van de vervaging aanpast. Standaard: 1.0. 0.0 schakelt de vervaging uit.file_size
(Optioneel): Specificeert de gewenste uitvoerbestandsgrootte in bytes. De service probeert een afbeelding terug te geven die deze grootte niet overschrijdt.width
(Optioneel): Specificeert de gewenste breedte van de uitvoerafbeelding.height
(Optioneel): Specificeert de gewenste hoogte van de uitvoerafbeelding.format
(Optioneel): Specificeert het gewenste uitvoerformaat van de afbeelding. Mogelijke waarden: JPEG, PNG, WEBP.logo_url
(Optioneel): De URL van een logobestand dat op kentekenplaten moet worden geplaatst. Dit kan een HTTP-URL of een data-URL zijn. Zorg ervoor dat de URL correct is gecodeerd voordat u deze als verzoekparameter doorgeeft.logo_size
(Optioneel): Specificeert de logo-grootte als een getal tussen 0.1 en 1.0.plate_screws
(Optioneel): Voegt schroeven toe aan kentekenplaten. Werkt alleen samen met de logo_url-parameter.
Antwoord
Succesvol antwoord: (HTTP Status: 200) De service retourneert de verwerkte afbeelding in een van de volgende formaten: JPEG, PNG, WEBP.
Foutantwoord: (HTTP Status: 500, 403)
{
"message": "Error message"
}
Afbeelding vervagen met een POST-verzoek
POST https://blur-api-eu1.watermarkly.com/blur/
or
POST https://blur-api-us1.watermarkly.com/blur/
Dient een afbeelding in voor verwerking.
Verzoek
- Methode:
POST
- Content-Type:
application/octet-stream
- Headers:
x-api-key
: Uw API-sleutel
- Queryparameters:
blur_intensity
(Optioneel): Een float-waarde tussen 0.0 en 20.0 die de intensiteit van de vervaging aanpast. Standaard: 1.0. De waarde 0.0 schakelt vervaging uit.file_size
(Optioneel): Geeft de gewenste bestandsgrootte in bytes aan. De service probeert een afbeelding te retourneren die deze grootte niet overschrijdt.width
(Optioneel): Geeft de gewenste breedte van de uitvoerafbeelding aan.height
(Optioneel): Geeft de gewenste hoogte van de uitvoerafbeelding aan.format
(Optioneel): Geeft het gewenste uitvoerformaat aan. Mogelijke waarden: JPEG, PNG, WEBP.logo_url
(Optioneel): De URL van een logobestand om op kentekenplaten te plaatsen. Dit kan een HTTP- of een data-URL zijn. Zorg ervoor dat de URL correct is gecodeerd voordat u deze als parameter opgeeft.logo_size
(Optioneel): Geeft de grootte van het logo op als een getal tussen 0.1 en 1.0.plate_screws
(Optioneel): Voegt schroeven toe aan kentekenplaten. Werkt alleen in combinatie met de logo_url-parameter.
Reactie
Succesvolle reactie: (HTTP Status: 200) De service retourneert de verwerkte afbeelding in een van de volgende formaten: JPEG, PNG, WEBP.
Foutreactie: (HTTP Status: 500, 403)
{
"message": "Error message"
}
Verwerkingsdetails
- Verwerkte afbeeldingen worden niet opgeslagen op onze servers.
- De service accepteert afbeeldingen in de formaten JPEG, PNG, WEBP, AVIF, HEIC/HEIF.
- AVIF- en HEIF-afbeeldingen worden omgezet naar JPEG, tenzij een ander formaat is opgegeven.
- Maximale invoergrootte van afbeeldingen:
- GET-verzoeken: 20MB of 6000x6000 pixels.
- POST-verzoeken: 6MB of 6000x6000 pixels.
- API-verzoeklimieten:
- 500 parallelle verzoeken
- 500 verzoeken per seconde
- 100.000 verzoeken per dag
- Indien u hogere limieten nodig heeft, neem dan contact met ons op via api-support@watermarkly.com.
Beveiliging en privacy
- API-verzoeken vereisen authenticatie via een API-sleutel.
- Klantbestanden worden niet gebruikt voor AI-modeltraining.
- Alle verwerking vindt plaats op AWS-infrastructuur. Wij kunnen de API gratis implementeren in een regio naar keuze.
Voorbeelden van gebruik
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);
}
})();