REST API. Kaburkan Muka dan Plat Lesen dalam Foto

API Kabur Watermarkly secara automatik mengesan dan mengaburkan muka dan plat lesen dalam imej. Ia berjalan sepenuhnya pada infrastruktur AWS dan mengutamakan privasi - fail anda tidak pernah digunakan untuk melatih model AI. Kami menggunakan AWS Lambda untuk memproses beribu-ribu permintaan secara selari, memastikan prestasi dan ketersediaan yang boleh dipercayai di pelbagai rantau di seluruh dunia.

Cuba Secara Percuma

Kami menjual API melalui AWS Marketplace. Kos: $0.01 / permintaan. Terdapat pilihan percubaan percuma selama 7 hari.


Ciri-ciri Utama

Mengesan dan mengaburkan plat lesen dan muka dalam imej secara automatik

Pilihan untuk menggantikan plat lesen dengan logo projek atau syarikat anda.

Boleh mengubah saiz, memangkas, atau menukar format imej yang diproses.

Menyokong sehingga 500 permintaan sesaat.

Memproses imej secara selari untuk prestasi yang lebih pantas.

Saiz imej maksimum yang disokong: 6000 × 6000 piksel.

Permintaan API memerlukan pengesahan melalui kunci API.

Jika anda memerlukan pemprosesan yang lebih pantas, sokongan untuk imej yang lebih besar, atau kadar permintaan yang lebih tinggi, sila hubungi kami di api-support@watermarkly.com.


Contoh Output

Muka wanita dan plat lesen telah dikaburkan.

API untuk mengaburkan muka dan plat lesen pada imej

Plat lesen digantikan dengan logo syarikat, dan muka wanita telah dikaburkan.

API untuk mengaburkan muka dan plat lesen pada imej

Dapatkan API

Kami menjual API melalui AWS Marketplace. Kos: $0.01 / permintaan. Terdapat pilihan percubaan percuma selama 7 hari.


Butiran Pemprosesan

  • Imej yang diproses tidak disimpan di pelayan kami.
  • Perkhidmatan menerima imej dalam format JPEG, PNG, WEBP, AVIF, HEIC/HEIF.
  • Imej AVIF dan HEIF akan ditukar kepada JPEG melainkan format lain dinyatakan.
  • Saiz imej input maksimum:
    • Permintaan GET: 20MB atau 6000x6000 piksel.
    • Permintaan POST: 6MB atau 6000x6000 piksel.
  • Had kadar API:
    • 500 permintaan selari
    • 500 permintaan sesaat
    • 100,000 permintaan sehari

Endpoint API

Rantau

Pada masa ini, kami menyediakan API di dua rantau:

Anda bebas menggunakan mana-mana endpoint yang lebih mudah. Anda boleh menggunakan endpoint kedua sebagai sandaran sekiranya satu rantau AWS mengalami gangguan. Jika anda memerlukan API di rantau lain, sila beritahu kami.

Kaedah Permintaan

Anda boleh menghantar imej untuk pemprosesan menggunakan permintaan GET atau POST.
Jika imej anda tersedia secara umum, kami mengesyorkan menghantar permintaan GET kerana ia sedikit lebih pantas daripada permintaan POST.

Kaburkan Imej Menggunakan Permintaan GET (Disyorkan)

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

atau

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

Membuat perkhidmatan memuat turun imej daripada image_url dan memprosesnya.

Permintaan

  • Kaedah: GET
  • Header:
    • x-api-key: Kunci API anda
  • Parameter Kueri URL:
    • url (Wajib): URL lengkap imej yang akan diproses.
    • blur_intensity (Pilihan): Nilai float antara 0.0 dan 20.0 yang melaraskan keamatan kabur. Lalai: 1.0. Menghantar 0.0 melumpuhkan pengaburan.
    • file_size (Pilihan): Menentukan saiz fail output yang diingini dalam bait. Perkhidmatan cuba mengembalikan imej yang tidak melebihi saiz ini.
    • width (Pilihan): Menentukan lebar imej output yang diingini.
    • height (Pilihan): Menentukan tinggi imej output yang diingini.
    • format (Pilihan): Menentukan format imej output yang diingini. Nilai yang mungkin: JPEG, PNG, WEBP.
    • logo_url (Pilihan): URL fail logo untuk diletakkan pada plat lesen. Boleh berupa URL HTTP atau data URL. Pastikan URL dilepaskan dengan betul sebelum dihantar sebagai parameter permintaan.
    • logo_size (Pilihan): Menentukan saiz logo sebagai nombor dari 0.1 hingga 1.0.
    • plate_screws (Pilihan): Menambah skru plat pada plat lesen. Berkesan bersama parameter logo_url sahaja.

Respons

Respons Berjaya: (Status HTTP: 200) Perkhidmatan mengembalikan imej yang telah diproses dalam salah satu format berikut: JPEG, PNG, WEBP.

Respons Ralat: (Status HTTP: 500, 403)

{
  "message": "Mesej ralat"
}

Kaburkan Imej Menggunakan Permintaan POST

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

atau

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

Menghantar imej untuk pemprosesan.

Permintaan

  • Kaedah: POST
  • Content-Type: application/octet-stream
  • Header:
    • x-api-key: Kunci API anda
  • Parameter Kueri:
    • blur_intensity (Pilihan): Nilai float antara 0.0 dan 20.0 yang melaraskan keamatan kabur. Lalai: 1.0. Menghantar 0.0 melumpuhkan pengaburan.
    • file_size (Pilihan): Menentukan saiz fail output yang diingini dalam bait. Perkhidmatan cuba mengembalikan imej yang tidak melebihi saiz ini.
    • width (Pilihan): Menentukan lebar imej output yang diingini.
    • height (Pilihan): Menentukan tinggi imej output yang diingini.
    • format (Pilihan): Menentukan format imej output yang diingini. Nilai yang mungkin: JPEG, PNG, WEBP.
    • logo_url (Pilihan): URL fail logo untuk diletakkan pada plat lesen. Boleh berupa URL HTTP atau data URL. Pastikan URL dilepaskan dengan betul sebelum dihantar sebagai parameter permintaan.
    • logo_size (Pilihan): Menentukan saiz logo sebagai nombor dari 0.1 hingga 1.0.
    • plate_screws (Pilihan): Menambah skru plat pada plat lesen. Berkesan bersama parameter logo_url sahaja.

Respons

Respons Berjaya: (Status HTTP: 200) Perkhidmatan mengembalikan imej yang telah diproses dalam salah satu format berikut: JPEG, PNG, WEBP.

Respons Ralat: (Status HTTP: 500, 403)

{
  "message": "Mesej ralat"
}

Contoh Penggunaan

Python

import requests
import urllib.parse

API_KEY = 'your_api_key'
API_URL = 'https://blur-api-eu1.watermarkly.com/blur/'

input_path = ''       # Laluan imej tempatan
output_path = ''      # Laluan output tempatan

# Kaburkan imej menggunakan permintaan 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:
        # Had kadar API dilampaui, tunggu sebentar
        time.sleep(0.1)
        response = requests.post(API_URL, headers={'x-api-key': API_KEY}, data=image_file)
# Simpan imej yang diproses secara tempatan
with open(output_path, 'wb') as f:
    f.write(response.content)


# Kaburkan imej menggunakan permintaan 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})
# Simpan respons secara tempatan
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/';

// Fungsi pembantu untuk menjeda pelaksanaan bagi bilangan milisaat yang diberikan
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));

(async () => {
  // Kaburkan imej menggunakan permintaan POST
  try {
    const inputPath = 'input_path_here';   // Gantikan dengan laluan input sebenar anda
    const outputPath = 'output_path_here'; // Gantikan dengan laluan output sebenar anda

    // Baca fail imej sebagai data binari secara tidak segerak
    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) {
      // Had kadar API dilampaui, tunggu sebentar
      await sleep(100); // tunggu selama 0.1 saat
      response = await fetch(API_URL, {
        method: 'POST',
        headers: {
          'x-api-key': API_KEY,
          'Content-Type': 'application/octet-stream'
        },
        body: imageData
      });
    }
    // Simpan imej yang diproses secara tempatan secara tidak segerak
    const arrayBuffer = await response.arrayBuffer();
    const buffer = Buffer.from(arrayBuffer);
    await fs.writeFile(outputPath, buffer);
  } catch (error) {
    console.error('Ralat semasa permintaan POST:', error);
  }

  // Kaburkan imej menggunakan permintaan GET
  try {
    const outputPath = 'output_path_here'; // Gantikan dengan laluan output sebenar anda
    const encodedUrl = encodeURIComponent("https://nikitin.io/eqe.jpg"); // Enkod URL
    const response = await fetch(`${API_URL}?url=${encodedUrl}`, {
      method: 'GET',
      headers: {
        'x-api-key': API_KEY
      }
    });
    // Simpan respons secara tempatan secara tidak segerak
    const arrayBuffer = await response.arrayBuffer();
    const buffer = Buffer.from(arrayBuffer);
    await fs.writeFile(outputPath, buffer);
  } catch (error) {
    console.error('Ralat semasa permintaan GET:', error);
  }
})();