REST API. Blur Wajah dan Plat Nomor di Foto

Watermarkly Blur API secara otomatis mendeteksi dan memblur wajah dan plat nomor dalam gambar. API ini sepenuhnya berjalan pada infrastruktur AWS dan memprioritaskan privasi - file Anda tidak pernah digunakan untuk melatih model AI. Kami menggunakan AWS Lambda untuk memproses ribuan permintaan secara paralel, memastikan kinerja yang andal dan ketersediaan di berbagai wilayah di seluruh dunia.

Coba Gratis

Kami menjual API melalui AWS Marketplace. Biaya: $0.01 / permintaan. Ada pilihan uji coba gratis 7 hari.


Fitur Utama

Secara otomatis mendeteksi dan memblur plat nomor dan wajah dalam gambar

Opsional mengganti plat nomor dengan logo proyek atau perusahaan Anda.

Dapat mengubah ukuran, memotong, atau mengonversi gambar yang diproses.

Mendukung hingga 500 permintaan per detik.

Memproses gambar secara paralel untuk kinerja lebih cepat.

Ukuran gambar maksimum yang didukung: 6000 × 6000 piksel.

Permintaan API memerlukan autentikasi melalui API key.

Jika Anda memerlukan pemrosesan yang lebih cepat, dukungan untuk gambar yang lebih besar, atau tingkat permintaan yang lebih tinggi, silakan hubungi kami di api-support@watermarkly.com.


Contoh Output

Wajah wanita dan plat nomor diblur.

API untuk memblur wajah dan plat nomor pada gambar

Plat nomor diganti dengan logo perusahaan, dan wajah wanita diblur.

API untuk memblur wajah dan plat nomor pada gambar

Dapatkan API

Kami menjual API melalui AWS Marketplace. Biaya: $0.01 / permintaan. Ada pilihan uji coba gratis 7 hari.


Detail Pemrosesan

  • Gambar yang diproses tidak disimpan di server kami.
  • Layanan menerima gambar dalam format JPEG, PNG, WEBP, AVIF, HEIC/HEIF.
  • Gambar AVIF dan HEIF akan dikonversi ke JPEG kecuali format lain ditentukan.
  • Ukuran gambar input maksimum:
    • Permintaan GET: 20MB atau 6000x6000 piksel.
    • Permintaan POST: 6MB atau 6000x6000 piksel.
  • Batas tingkat API:
    • 500 permintaan paralel
    • 500 permintaan per detik
    • 100.000 permintaan per hari

API Endpoints

Wilayah

Saat ini, kami menyediakan API di dua wilayah:

Anda bebas menggunakan endpoint mana pun yang lebih nyaman. Anda dapat menggunakan endpoint kedua sebagai cadangan jika satu wilayah AWS mati. Jika Anda memerlukan API di wilayah yang berbeda, beri tahu kami.

Metode Permintaan

Anda dapat mengirimkan gambar untuk diproses menggunakan permintaan GET atau POST. Jika gambar Anda tersedia secara publik, kami merekomendasikan mengirim permintaan GET karena sedikit lebih cepat daripada permintaan POST.

Blur Gambar Menggunakan Permintaan GET (Direkomendasikan)

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

atau

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

Membuat layanan mengunduh gambar dari image_url dan memprosesnya.

Permintaan

  • Metode: GET
  • Headers:
    • x-api-key: API key Anda
  • Parameter Query URL:
    • url (Wajib): URL lengkap dari gambar yang akan diproses.
    • blur_intensity (Opsional): Nilai float antara 0.0 dan 20.0 yang menyesuaikan intensitas blur. Default: 1.0. Melewatkan 0.0 menonaktifkan blurring.
    • file_size (Opsional): Menentukan ukuran file output yang diinginkan dalam byte. Layanan mencoba mengembalikan gambar yang tidak melebihi ukuran ini.
    • width (Opsional): Menentukan lebar gambar output yang diinginkan.
    • height (Opsional): Menentukan tinggi gambar output yang diinginkan.
    • format (Opsional): Menentukan format gambar output yang diinginkan. Nilai yang mungkin: JPEG, PNG, WEBP.
    • logo_url (Opsional): URL file logo untuk ditempatkan di plat nomor. Bisa berupa URL HTTP atau URL data. Pastikan URL di-escape dengan benar sebelum melewatkannya sebagai parameter permintaan.
    • logo_size (Opsional): Menentukan ukuran logo sebagai angka dari 0.1 hingga 1.0.
    • plate_screws (Opsional): Menambahkan sekrup plat ke plat nomor. Efektif bersama dengan parameter logo_url saja.

Respons

Respons Berhasil: (HTTP Status: 200) Layanan mengembalikan gambar yang diproses dalam salah satu format berikut: JPEG, PNG, WEBP.

Respons Error: (HTTP Status: 500, 403)

{
  "message": "Error message"
}

Blur Gambar Menggunakan Permintaan POST

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

atau

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

Mengirimkan gambar untuk diproses.

Permintaan

  • Metode: POST
  • Content-Type: application/octet-stream
  • Headers:
    • x-api-key: API key Anda
  • Parameter Query:
    • blur_intensity (Opsional): Nilai float antara 0.0 dan 20.0 yang menyesuaikan intensitas blur. Default: 1.0. Melewatkan 0.0 menonaktifkan blurring.
    • file_size (Opsional): Menentukan ukuran file output yang diinginkan dalam byte. Layanan mencoba mengembalikan gambar yang tidak melebihi ukuran ini.
    • width (Opsional): Menentukan lebar gambar output yang diinginkan.
    • height (Opsional): Menentukan tinggi gambar output yang diinginkan.
    • format (Opsional): Menentukan format gambar output yang diinginkan. Nilai yang mungkin: JPEG, PNG, WEBP.
    • logo_url (Opsional): URL file logo untuk ditempatkan di plat nomor. Bisa berupa URL HTTP atau URL data. Pastikan URL di-escape dengan benar sebelum melewatkannya sebagai parameter permintaan.
    • logo_size (Opsional): Menentukan ukuran logo sebagai angka dari 0.1 hingga 1.0.
    • plate_screws (Opsional): Menambahkan sekrup plat ke plat nomor. Efektif bersama dengan parameter logo_url saja.

Respons

Respons Berhasil: (HTTP Status: 200) Layanan mengembalikan gambar yang diproses dalam salah satu format berikut: JPEG, PNG, WEBP.

Respons Error: (HTTP Status: 500, 403)

{
  "message": "Error message"
}

Contoh Penggunaan

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