Skip to main content
Glama

obrobka

Bildverarbeitung, die vollständig in Ihrem Browser läuft — konvertieren, skalieren, Hintergründe entfernen. Dateien verlassen niemals das Gerät.

obrobka.dobrovolskyi.com.ua

Ukrainisch zuerst, Englisch an zweiter Stelle. MIT-lizenziert.


Was es tut

Konvertieren

PNG · JPEG · WebP · AVIF als Ausgabe; HEIC wird auch gelesen

Auf exakte Größe anpassen

fünf Modi — contain, cover, fill, inside, outside

Hintergrund entfernen

drei Modellstufen, von 4,4 MB bis 84 MB

Umriss

farbiger Strich um das Motiv, die Leinwand wächst mit

Motivbezogener Zuschnitt

rahmt das Motiv ein, nicht die Mitte

Hochskalieren

Swin2SR ×2 oder ×4, gekachelt, sodass der Speicher konstant bleibt

Stapelverarbeitung

viele Dateien auf einmal, Ausgabe als ZIP

Metadaten

sehen, was die Datei aufzeichnet; das Ergebnis trägt nichts davon

Alles läuft als WebAssembly in einem Web Worker. Es gibt keinen Server, kein Hochladen und kein Konto.

Related MCP server: Agent Helper

Warum es Sie interessieren könnte

Derselbe Kern betreibt eine Browser-App und einen MCP-Server. packages/core hat kein DOM und keine Node-API — es sind reine Funktionen über RGBA-Puffer, mit der gesamten Ein-/Ausgabe hinter Ports. Ein runJob() bedient sowohl einen Browser-Tab als auch einen KI-Agenten.

npx obrobka-mcp

Gibt einem Agenten acht Werkzeuge — convert_image, resize_image, remove_background, smart_crop, upscale_image, read_metadata, strip_metadata und process_batch — die auf Dateipfaden statt auf base64-Blobs operieren.

Die Modellwahl basiert auf Messungen, nicht auf Modellkarten. Jeder Kandidat wurde heruntergeladen und profiliert, bevor er ausgewählt wurde — siehe den M2-Plan für die Zahlen. Zwei Erkenntnisse änderten das Design:

  • MODNet und ormbg sind nur auf Menschen trainiert. Bei einem nicht-menschlichen Motiv liefern sie eine leere Maske zurück, was sie als allgemeinen Standard ausschließt.

  • BiRefNet_lite wurde vom OOM-Killer bei 1024×1024 mit 4,2 GB freiem Speicher beendet. Ein Browser-Tab hat eine noch niedrigere Obergrenze, daher wurde es verworfen.

U²-Netp erwies sich als universell einsetzbar bei 4,4 MB, wodurch die Standardstufe zehnmal leichter wurde als ursprünglich geplant.

Ihre Handyfotos kamen seitlich verdreht heraus, und nichts hat es angezeigt. JPEG und HEIC speichern die Ausrichtung als Tag, nicht in den Pixeln. @jsquash/jpeg ignoriert es; das <img> des Browsers wendet es an. So sah die „Vorher“-Vorschau aufrecht aus und das Ergebnis kam auf der Seite heraus — gemessen an einem eigens erstellten 8×4-JPEG mit Orientation: 6, das mit oder ohne Tag zu 8×4 dekodiert wurde. Die Pipeline liest nun das Tag und dreht zuerst, vor jeder Operation, die über Koordinaten nachdenkt.

Die Stapelparallelität hat zwei verschiedene richtige Antworten. Ohne Modell bringen vier Worker 20 Dateien von 3639 ms auf 1186 ms — 3,1× für 223 MB. Mit einem Modell ist derselbe Pool eine Falle: ONNX Runtime parallelisiert bereits innerhalb einer Sitzung, sodass vier U²-Netp-Sitzungen 1,8× für 1,2 GB kaufen, und zwei isnet-Sitzungen erreichen 2,2 GB, mehr als ein Tab halten kann. Der Pool ist also needsModel ? 1 : min(cores − 1, 4).

ZIP-Kompression hängt vom Format ab, und nicht so, wie Sie vermuten würden. Das Deflatieren von WebP spart 0,1 % für zehnmal so viel CPU — wie erwartet. Das Deflatieren unserer PNGs spart 15,2 %, weil der Encoder schnell komprimiert und Redundanz zurücklässt. Stufe 4 für PNG, store für alles andere.

Architektur

packages/core             pure ops over RGBA buffers — no DOM, no Node
  ops/                    resample · crop · fit · mask · outline · smartCrop
  ports/                  Codec · Segmenter · Upscaler · Metadata
packages/codecs           jSquash, split into browser and Node adapters
packages/models           model registry and three preprocessing recipes
packages/onnx-node        onnxruntime-node + on-disk cache
packages/onnx-web         onnxruntime-web + Cache Storage, WebGPU → WASM
packages/metadata         EXIF reading (exifr) and byte-level stripping
packages/heic             libheif, isolated — LGPL, loaded on demand
packages/contract-tests   one suite, run against both adapters
apps/web                  Astro + Svelte island, PWA
apps/mcp                  stdio MCP server

Die Vertragstests sind der Kern der Port-Grenze: dieselbe Suite läuft gegen onnxruntime-node und onnxruntime-web, sodass eine Abweichung zwischen ihnen sofort sichtbar wird, statt erst in der Produktion.

Modelle

Alle unter freizügigen Lizenzen — das Projekt nimmt Spenden an, was nicht-kommerzielle Modelllizenzen zu einer schlechten Wahl macht.

Stufe

Modell

Größe

Lizenz

Umfang

Schnell (Standard)

U²-Netp

4,4 MB

Apache-2.0

jedes Motiv

Porträt

MODNet fp16

12,4 MB

Apache-2.0

nur Personen

Qualität

isnet-general

84,1 MB

MIT

jedes Motiv

Modelle werden von R2 bereitgestellt und nach der ersten Nutzung im Browser zwischengespeichert.

Entwicklung

Erfordert Node ≥ 22.12 und pnpm 11.

pnpm install
pnpm typecheck
pnpm test
pnpm --filter @obrobka/web dev

Einige Tests benötigen ein echtes HEIC, das lokal nicht generiert werden kann — libheif kann nur lesen. Die Datei wird einmal aus dem HEIF-Konformitätssatz abgerufen und in ~/.cache/obrobka/fixtures zwischengespeichert, zusammen mit den Modellen. Alles andere, einschließlich JPEGs mit EXIF-Ausrichtung und GPS, wird zur Testzeit Byte für Byte erstellt: Ein Foto im Repository wäre jemandes Foto mit jemandes Koordinaten.

End-to-End-Tests laufen gegen einen statischen Server, der die Produktions-_headers anwendet, da crossOriginIsolated sonst nicht verifiziert werden kann:

pnpm --filter @obrobka/web build
pnpm exec playwright test

Eine Anmerkung zu den Tests

Die Segmentierung wird gegen eine prozedural generierte schattierte Kugel getestet, nicht gegen ein Foto. Das beweist, dass die Pipeline funktioniert — Vorverarbeitung, Inferenz, Maske, Compositing — sagt aber nichts über die Qualität bei Haaren, Glas oder Fell aus. Beurteilen Sie das, indem Sie die Website nutzen.

Ein früheres Fixture, ein flacher Kreis mit harter Kante, erwies sich als außerhalb der Verteilung für diese Modelle: Dieselbe Form erzielte 0,97 oder 0,03, je nachdem, ob sie hochskaliert worden war. Wissenswert, wenn Sie Tests gegen Segmentierungsmodelle schreiben.

Lizenz

MIT. Modellgewichte tragen ihre eigenen Lizenzen, die oben aufgeführt sind.

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • AI image processing: upscale, resize, crop, compress, convert file format, and generate SEO metadata

  • OCR, transcription, file extraction, and image generation for AI agents via MCP.

  • Generate images, GIFs, and PDFs from HTML, URLs, or templates — from your AI agent.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ThatHunky/obrobka'

If you have feedback or need assistance with the MCP directory API, please join our Discord server