REST API. Gör ansikten och registreringsskyltar suddiga i foton

Watermarkly Blur API identifierar automatiskt och suddiggör ansikten och registreringsskyltar i bilder. Det körs helt på AWS-infrastruktur och prioriterar integritet – dina filer används aldrig för att träna AI-modeller. Vi använder AWS Lambda för att behandla tusentals förfrågningar parallellt, vilket säkerställer pålitlig prestanda och tillgänglighet i flera regioner världen över.

Testa gratis

Vi säljer API:t via AWS Marketplace. Kostnad: $0.01 / förfrågan. Det finns ett alternativ för en gratis provperiod på 7 dagar.


Huvudfunktioner

Identifierar och suddiggör automatiskt registreringsskyltar och ansikten i bilder

Kan vid behov ersätta registreringsskyltar med din projekt- eller företagslogotyp.

Kan ändra storlek, beskära eller konvertera bearbetade bilder.

Stödjer upp till 500 förfrågningar per sekund.

Bearbetar bilder parallellt för snabbare prestanda.

Maximal bildstorlek som stöds: 6000 × 6000 pixlar.

API-förfrågningar kräver autentisering via en API-nyckel.

Om du behöver snabbare bearbetning, stöd för större bilder eller en högre förfrågningsnivå, kontakta oss på api-support@watermarkly.com.


Exempel på resultat

Kvinnans ansikte och registreringsskylten är suddiga.

API för att suddiggöra ansikten och registreringsskyltar i bilder

Registreringsskylten ersätts med företagets logotyp och kvinnans ansikte är suddigt.

API för att suddiggöra ansikten och registreringsskyltar i bilder

Hämta API

Vi säljer API:t via AWS Marketplace. Kostnad: $0.01 / förfrågan. Det finns ett alternativ för en gratis provperiod på 7 dagar.


Bearbetningsdetaljer

  • Bearbetade bilder lagras inte på våra servrar.
  • Tjänsten tar emot bilder i formaten JPEG, PNG, WEBP, AVIF, HEIC/HEIF.
  • AVIF- och HEIF-bilder konverteras till JPEG om inget annat format anges.
  • Maximal storlek för indata:
    • GET-förfrågningar: 20 MB eller 6000 × 6000 pixlar.
    • POST-förfrågningar: 6 MB eller 6000 × 6000 pixlar.
  • Begränsningar för API:t:
    • 500 parallella förfrågningar
    • 500 förfrågningar per sekund
    • 100 000 förfrågningar per dag

API-endpoints

Regioner

För närvarande erbjuder vi API:t i två regioner:

Du kan använda den endpoint som är mest praktisk. Du kan även använda den andra endpointen som reserv om en enskild AWS-region skulle gå ner. Om du behöver API:t i en annan region, hör av dig.

Förfrågningsmetoder

Du kan skicka in bilder för bearbetning med antingen GET- eller POST-förfrågningar.
Om dina bilder är offentligt tillgängliga rekommenderar vi GET-förfrågningar eftersom de är något snabbare än POST-förfrågningar.

Suddiggör bild med GET-förfrågan (rekommenderas)

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

eller

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

Tjänsten laddar ner bilden från image_url och bearbetar den.

Förfrågan

  • Metod: GET
  • Headers:
    • x-api-key: Din API-nyckel
  • URL query parameters:
    • url (Obligatorisk): Den fullständiga URL:en till bilden som ska bearbetas.
    • blur_intensity (Valfri): Ett flyttal mellan 0.0 och 20.0 som justerar suddighetsstyrkan. Standard: 1.0. Värdet 0.0 stänger av suddiggörning.
    • file_size (Valfri): Anger önskad filstorlek för utdata i byte. Tjänsten försöker returnera en bild som inte överskrider denna storlek.
    • width (Valfri): Anger önskad bredd på utdatabilden.
    • height (Valfri): Anger önskad höjd på utdatabilden.
    • format (Valfri): Anger önskat bildformat för utdata. Möjliga värden: JPEG, PNG, WEBP.
    • logo_url (Valfri): URL till en logotypfil som ska placeras på registreringsskyltar. Kan vara en HTTP-URL eller en data-URL. Se till att URL:en är korrekt URL-kodad innan du skickar den som en query-parameter.
    • logo_size (Valfri): Anger logotypstorleken som ett tal från 0.1 till 1.0.
    • plate_screws (Valfri): Lägger till skruvar på registreringsskyltar. Fungerar endast tillsammans med parametern logo_url.

Svar

Lyckat svar: (HTTP Status: 200) Tjänsten returnerar den bearbetade bilden i något av följande format: JPEG, PNG, WEBP.

Felsvar: (HTTP Status: 500, 403)

{
  "message": "Error message"
}

Suddiggör bild med POST-förfrågan

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

eller

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

Skickar in en bild för bearbetning.

Förfrågan

  • Metod: POST
  • Content-Type: application/octet-stream
  • Headers:
    • x-api-key: Din API-nyckel
  • Query parameters:
    • blur_intensity (Valfri): Ett flyttal mellan 0.0 och 20.0 som justerar suddighetsstyrkan. Standard: 1.0. Värdet 0.0 stänger av suddiggörning.
    • file_size (Valfri): Anger önskad filstorlek för utdata i byte. Tjänsten försöker returnera en bild som inte överskrider denna storlek.
    • width (Valfri): Anger önskad bredd på utdatabilden.
    • height (Valfri): Anger önskad höjd på utdatabilden.
    • format (Valfri): Anger önskat bildformat för utdata. Möjliga värden: JPEG, PNG, WEBP.
    • logo_url (Valfri): URL till en logotypfil som ska placeras på registreringsskyltar. Kan vara en HTTP-URL eller en data-URL. Se till att URL:en är korrekt URL-kodad innan du skickar den som en query-parameter.
    • logo_size (Valfri): Anger logotypstorleken som ett tal från 0.1 till 1.0.
    • plate_screws (Valfri): Lägger till skruvar på registreringsskyltar. Fungerar endast tillsammans med parametern logo_url.

Svar

Lyckat svar: (HTTP Status: 200) Tjänsten returnerar den bearbetade bilden i något av följande format: JPEG, PNG, WEBP.

Felsvar: (HTTP Status: 500, 403)

{
  "message": "Error message"
}

Användningsexempel

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);
  }
})();