Skip to content

AI Services (RemBG & IOPaint)

Magic eVERSE draait twee lokale AI-services voor beeldbewerking, gemanaged via één Docker Compose file.

ServiceContainerIntern PortExtern PortModelFunctie
RemBGmagic_rembg50505050isnet-general-useAchtergrond verwijderen
IOPaintmagic_iopaint80805055LaMaInpainting (logo/object verwijderen)

Docker Compose: /mnt/data/magic_omniverse/magic_services/docker-compose.yml

URLServiceAuthGebruik
services.magicomniverse.online/rembg/RemBGAPI key via nginxCentraal, voor alle tools
services.magicomniverse.online/iopaint/IOPaintGeenCentraal, voor alle tools
modal.magicomniverse.online/rembg/RemBGAPI key + device-authModal/storefront gebruik
modal.magicomniverse.online/iopaint/IOPaintGeen (eigen CORS)Modal/storefront gebruik
rembg.magiceverse.online (legacy)RemBGIP whitelist (Spranz)Legacy, alleen Spranz server

Base URL: http://localhost:5050 (intern) of https://services.magicomniverse.online/rembg

Header: X-API-Key: <key>

Bij gebruik via services.magicomniverse.online wordt de API key automatisch door nginx geïnjecteerd.

POST /remove-background — Bestand uploaden

Section titled “POST /remove-background — Bestand uploaden”
Terminal window
curl -X POST http://localhost:5050/remove-background \
-H "X-API-Key: YOUR_KEY" \
-F "file=@logo.png" \
-F "model=isnet-general-use" \
--output result.png

Parameters:

ParameterTypeDefaultBeschrijving
fileFile (multipart)verplichtInput afbeelding
modelstringisnet-general-useAI model (zie /models)
cleanbooltruePost-processing: verwijdert ingesloten achtergrond (bv. wit in letter O)
bg_colorstringautoAchtergrondkleur detectie: auto, white, black, #RRGGBB
toleranceint30Kleur matching tolerantie (0-255)

Response: PNG image met transparante achtergrond.

Terminal window
curl "http://localhost:5050/remove-background-url?url=https://example.com/logo.png" \
-H "X-API-Key: YOUR_KEY" \
--output result.png

Zelfde parameters als POST, plus url (verplicht).

POST /remove-background-base64 — Base64 input

Section titled “POST /remove-background-base64 — Base64 input”
Terminal window
curl -X POST http://localhost:5050/remove-background-base64 \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"image": "data:image/png;base64,iVBOR...", "model": "u2net", "clean": true}'

Response: {"image": "data:image/png;base64,..."}

{
"default": "isnet-general-use",
"models": [
{"name": "birefnet-general", "description": "BiRefNet - beste kwaliteit, scherpste randen"},
{"name": "birefnet-general-lite", "description": "BiRefNet Lite - snel, goede kwaliteit"},
{"name": "u2net", "description": "U2Net - general purpose, klassiek"},
{"name": "u2netp", "description": "U2Net lightweight - sneller maar minder nauwkeurig"},
{"name": "u2net_human_seg", "description": "U2Net - geoptimaliseerd voor mensen"},
{"name": "silueta", "description": "Silueta - vergelijkbaar met u2net maar kleiner"},
{"name": "isnet-general-use", "description": "ISNet - goed voor algemene objecten (default)"}
]
}
{"status": "ok", "service": "rembg", "version": "1.3.0", "auth_enabled": true}

Post-processing: Clean Enclosed Background

Section titled “Post-processing: Clean Enclosed Background”

De clean parameter (default true) verwijdert ingesloten achtergrondgebieden die rembg mist. Bijvoorbeeld:

  • Wit binnen de letter O of B in een logo
  • Kleine achtergrondrestanten binnen het onderwerp

Werking:

  1. Detecteert achtergrondkleur via randen/hoeken
  2. Vindt pixels met die kleur die nog steeds zichtbaar zijn (alpha > 128)
  3. Maakt deze pixels transparant
  4. Verwijdert ook inverse kleuren (bij donkere achtergrond: witte eilandjes en vice versa)

Base URL: http://localhost:5055 (intern) of https://services.magicomniverse.online/iopaint

IOPaint gebruikt het LaMa (Large Mask) model voor inpainting - het intelligent invullen van gemaskeerde gebieden.

const response = await fetch('https://services.magicomniverse.online/iopaint/api/v1/inpaint', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
image: '<base64 encoded image without data: prefix>',
mask: '<base64 encoded mask without data: prefix>',
hd_strategy: 'Crop',
hd_strategy_crop_margin: 196,
hd_strategy_crop_trigger_size: 800,
hd_strategy_resize_limit: 2048
})
});
// Response: PNG blob

Parameters:

ParameterTypeBeschrijving
imagestring (base64)Input afbeelding, zonder data:image/...;base64, prefix
maskstring (base64)Mask PNG: wit = verwijderen, zwart = behouden
hd_strategystringCrop (aanbevolen), Resize, of Original
hd_strategy_crop_marginintMarge rondom masker bij crop (px)
hd_strategy_crop_trigger_sizeintMinimale afbeeldingsgrootte voor HD strategy
hd_strategy_resize_limitintMax resize limiet

Response: PNG image blob (geen JSON).

Mask formaat: Zwart-wit PNG, zelfde dimensies als input:

  • Wit (255,255,255) = te verwijderen gebied
  • Zwart (0,0,0) = te behouden gebied

Integratie in Logo Horloge Management Tool

Section titled “Integratie in Logo Horloge Management Tool”

De editor op logohorlogemanagement.magiceverse.online gebruikt deze services:

FunctieServiceAanroep methodeEndpoint
Achtergrond verwijderenRemBGPHP proxy/editor/api/rembg-proxy.phpservices.magicomniverse.online/rembg
Logo/object verwijderen (gratis)IOPaintDirect JS fetch/editor/api/iopaint-proxy.php → services.magicomniverse.online/iopaint
Logo/object verwijderen (betaald)ClipdropPHP proxy/editor/api/clipdrop-cleanup.php → Clipdrop API
Moodshot generatieClaid AI + RemBGPHP proxy/editor/api/claid-moodshot.php

De editor heeft een toggle om te kiezen tussen IOPaint (gratis, lokaal) en Clipdrop (betaald, cloud):

// In editor/index.php
let aiService = localStorage.getItem('aiService') || 'iopaint'; // default IOPaint

De keuze wordt opgeslagen in localStorage zodat de voorkeur behouden blijft.


Terminal window
cd /mnt/data/magic_omniverse/magic_services
docker compose up -d # Start beide services
docker compose restart rembg # Herstart alleen rembg
docker compose restart iopaint # Herstart alleen iopaint
docker compose logs -f rembg # Volg rembg logs
Terminal window
# RemBG
curl http://localhost:5050/health
# IOPaint
curl -s http://localhost:5055/ | head -1 # Moet HTML teruggeven (web UI)

Beide services hebben gelimiteerde resources:

  • Memory: 2GB reserved, 4GB max
  • CPU: 2 cores reserved, 4 cores max
  • Models: Cached in Docker volumes (rembg_models, iopaint_models)
BestandLocatie
Docker Compose/mnt/data/magic_omniverse/magic_services/docker-compose.yml
RemBG app (actief)/mnt/data/magic_omniverse/magic_services/rembg-app.py
RemBG frontend/mnt/data/magic_omniverse/magic_services/static/
Nginx services/etc/nginx/sites-available/services.magicomniverse.online
Nginx rembg (legacy)/etc/nginx/sites-available/rembg