REST API. Rozmazat obličeje a SPZ na fotkách
Watermarkly Blur API automaticky detekuje a rozmazává obličeje a SPZ v obrázcích. Běží výhradně na infrastruktuře AWS a prioritou je soukromí – vaše soubory nejsou nikdy použity k trénování AI modelů. K paralelnímu zpracování tisíců požadavků používáme AWS Lambda, což zajišťuje spolehlivý výkon a dostupnost v několika regionech po celém světě.
API prodáváme prostřednictvím AWS Marketplace. Cena: 0,01 USD / požadavek. K dispozici je možnost bezplatné 7denní zkušební verze.
Hlavní funkce
✓ Automaticky detekuje a rozmazává SPZ a obličeje v obrázcích
✓ Volitelně nahrazuje SPZ logem vašeho projektu nebo společnosti.
✓ Dokáže měnit velikost, ořezávat nebo převádět zpracované obrázky.
✓ Podporuje až 500 požadavků za sekundu.
✓ Zpracovává obrázky paralelně pro rychlejší výkon.
✓ Maximální podporovaná velikost obrázku: 6000 × 6000 pixelů.
✓ Požadavky API vyžadují autentizaci pomocí API klíče.
Pokud potřebujete rychlejší zpracování, podporu pro větší obrázky nebo vyšší frekvenci požadavků, kontaktujte nás prosím na api-support@watermarkly.com.
Příklady výstupu
Obličej ženy a SPZ jsou rozmazané.

SPZ je nahrazena logem společnosti a obličej ženy je rozmazaný.

API prodáváme prostřednictvím AWS Marketplace. Cena: 0,01 USD / požadavek. K dispozici je možnost bezplatné 7denní zkušební verze.
Podrobnosti o zpracování
- Zpracované obrázky nejsou ukládány na našich serverech.
- Služba přijímá obrázky ve formátech JPEG, PNG, WEBP, AVIF, HEIC/HEIF.
- Obrázky AVIF a HEIF budou převedeny na JPEG, pokud není specifikován jiný formát.
- Maximální velikost vstupního obrázku:
- GET požadavky: 20 MB nebo 6000x6000 pixelů.
- POST požadavky: 6 MB nebo 6000x6000 pixelů.
- Limity API:
- 500 paralelních požadavků
- 500 požadavků za sekundu
- 100 000 požadavků za den
API Endpointy
Regiony
V současné době poskytujeme API ve dvou regionech:
- Evropa: https://blur-api-eu1.watermarkly.com/ (eu-north-1)
- USA: https://blur-api-us1.watermarkly.com/ (us-east-2)
Můžete použít kterýkoli endpoint, který vám více vyhovuje. Druhý endpoint můžete použít jako záložní pro případ výpadku jednoho regionu AWS. Pokud potřebujete API v jiném regionu, dejte nám prosím vědět.
Metody požadavků
Obrázky ke zpracování můžete odesílat pomocí požadavků GET nebo POST.
Pokud jsou vaše obrázky veřejně dostupné, doporučujeme používat požadavky GET, protože jsou o něco rychlejší než požadavky POST.
Rozmazat obrázek pomocí požadavku GET (doporučeno)
GET https://blur-api-eu1.watermarkly.com/blur/?url={image_url}
nebo
GET https://blur-api-us1.watermarkly.com/blur/?url={image_url}
Zajistí stažení obrázku z image_url a jeho zpracování.
Požadavek
- Metoda: GET
- Hlavičky:
x-api-key: Váš API klíč
- Parametry URL dotazu:
url(povinné): Úplná URL obrázku, který má být zpracován.blur_intensity(volitelné): Hodnota typu float mezi 0.0 a 20.0, která upravuje intenzitu rozmazání. Výchozí: 1.0. Zadání 0.0 rozmazání vypne.file_size(volitelné): Určuje požadovanou velikost výstupního souboru v bajtech. Služba se pokusí vrátit obrázek, který tuto velikost nepřekročí.width(volitelné): Určuje požadovanou šířku výstupního obrázku.height(volitelné): Určuje požadovanou výšku výstupního obrázku.format(volitelné): Určuje požadovaný formát výstupního obrázku. Možné hodnoty: JPEG, PNG, WEBP.logo_url(volitelné): URL souboru s logem, které má být umístěno na SPZ. Může to být HTTP URL nebo data URL. Před předáním parametru se ujistěte, že je URL správně escapována.logo_size(volitelné): Určuje velikost loga jako číslo od 0.1 do 1.0.plate_screws(volitelné): Přidá šrouby na SPZ. Účinné pouze společně s parametrem logo_url.
Odpověď
Úspěšná odpověď: (HTTP Status: 200) Služba vrátí zpracovaný obrázek v jednom z následujících formátů: JPEG, PNG, WEBP.
Chybová odpověď: (HTTP Status: 500, 403)
{
"message": "Error message"
}
Rozmazat obrázek pomocí požadavku POST
POST https://blur-api-eu1.watermarkly.com/blur/
nebo
POST https://blur-api-us1.watermarkly.com/blur/
Odešle obrázek ke zpracování.
Požadavek
- Metoda:
POST - Content-Type:
application/octet-stream - Hlavičky:
x-api-key: Váš API klíč
- Parametry dotazu:
blur_intensity(volitelné): Hodnota typu float mezi 0.0 a 20.0, která upravuje intenzitu rozmazání. Výchozí: 1.0. Zadání 0.0 rozmazání vypne.file_size(volitelné): Určuje požadovanou velikost výstupního souboru v bajtech. Služba se pokusí vrátit obrázek, který tuto velikost nepřekročí.width(volitelné): Určuje požadovanou šířku výstupního obrázku.height(volitelné): Určuje požadovanou výšku výstupního obrázku.format(volitelné): Určuje požadovaný formát výstupního obrázku. Možné hodnoty: JPEG, PNG, WEBP.logo_url(volitelné): URL souboru s logem, které má být umístěno na SPZ. Může to být HTTP URL nebo data URL. Před předáním parametru se ujistěte, že je URL správně escapována.logo_size(volitelné): Určuje velikost loga jako číslo od 0.1 do 1.0.plate_screws(volitelné): Přidá šrouby na SPZ. Účinné pouze společně s parametrem logo_url.
Odpověď
Úspěšná odpověď: (HTTP Status: 200) Služba vrátí zpracovaný obrázek v jednom z následujících formátů: JPEG, PNG, WEBP.
Chybová odpověď: (HTTP Status: 500, 403)
{
"message": "Error message"
}
Příklady použití
Python
import requests
import urllib.parse
API_KEY = 'your_api_key'
API_URL = 'https://blur-api-eu1.watermarkly.com/blur/'
input_path = '' # Cesta k lokálnímu obrázku
output_path = '' # Cesta k výstupnímu obrázku
# Rozmazat obrázek pomocí požadavku POST
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:
# Překročen limit požadavků, chvíli počkejte
time.sleep(0.1)
response = requests.post(API_URL, headers={'x-api-key': API_KEY}, data=image_file)
# Uložit zpracovaný obrázek lokálně
with open(output_path, 'wb') as f:
f.write(response.content)
# Rozmazat obrázek pomocí požadavku GET
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})
# Uložit odpověď lokálně
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/';
// Pomocná funkce pro pozastavení provádění na daný počet milisekund
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
(async () => {
// Rozmazat obrázek pomocí požadavku POST
try {
const inputPath = 'input_path_here'; // Nahraďte skutečnou cestou k souboru
const outputPath = 'output_path_here'; // Nahraďte skutečnou cestou k souboru
// Asynchronní načtení souboru s obrázkem jako binárních dat
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) {
// Překročen limit požadavků, chvíli počkejte
await sleep(100); // spát 0,1 sekundy
response = await fetch(API_URL, {
method: 'POST',
headers: {
'x-api-key': API_KEY,
'Content-Type': 'application/octet-stream'
},
body: imageData
});
}
// Asynchronní uložení zpracovaného obrázku lokálně
const arrayBuffer = await response.arrayBuffer();
const buffer = Buffer.from(arrayBuffer);
await fs.writeFile(outputPath, buffer);
} catch (error) {
console.error('Chyba během požadavku POST:', error);
}
// Rozmazat obrázek pomocí požadavku GET
try {
const outputPath = 'output_path_here'; // Nahraďte skutečnou cestou k souboru
const encodedUrl = encodeURIComponent("https://nikitin.io/eqe.jpg"); // Enkódovat URL
const response = await fetch(`${API_URL}?url=${encodedUrl}`, {
method: 'GET',
headers: {
'x-api-key': API_KEY
}
});
// Asynchronní uložení odpovědi lokálně
const arrayBuffer = await response.arrayBuffer();
const buffer = Buffer.from(arrayBuffer);
await fs.writeFile(outputPath, buffer);
} catch (error) {
console.error('Chyba během požadavku GET:', error);
}
})();