Image Lab About
What this is

An image editor that does the work on your machine.

Most online image tools are a thin form over a server. You upload, wait, download, and repeat for every single change. Image Lab inverts that: crop, resize, levels, filters, and format conversion all run in your browser against the canvas API, so an edit costs a frame instead of a round trip. The server is reserved for the handful of operations that genuinely need it.

The design goal

The target was an editor fast enough to leave open all day but capable enough to finish a real job. That produced three rules the app is built around.

  1. Latency is a feature If an operation can run on the client, it runs on the client. Adjustment sliders preview against a display-resolution copy of the image, so feedback is immediate no matter how large the source file is.
  2. Preview and result must agree The same pixel code runs for the live preview and the committed full-resolution render. There is no separate "fast approximation" path that can drift from the real output.
  3. Nothing is destroyed quietly Every applied operation becomes a history entry you can jump back to, and previews never enter history until you press apply.

What runs where

OperationRuns onWhy
Crop, rotate, flip, resizeBrowserPure canvas transforms.
Levels, tone, colourBrowserLookup tables over pixel data.
Filters, unsharp, ditherBrowserConvolution and error diffusion.
Histogram, CLAHEBrowserLocal statistics, no upload needed.
PNG / JPEG / WEBP exportBrowserNative canvas encoders.
BMP / TIFF / GIF exportServerNo canvas encoder exists for these.
Metadata embeddingServerCanvas cannot write EXIF or PNG text chunks.
GIF frame surgeryServerFrame timing and palettes need Pillow.
Seam carvingServerHeavy dynamic-programming pass.
AI background removalServerRuns a local segmentation model.

Privacy

Client-side operations never transmit your image. When an operation does need the server, the image is processed in memory and returned in the response; nothing is written to disk and nothing is retained after the request finishes.

Your working session, including undo history, is cached in your own browser via IndexedDB so a reload does not lose your work. Clearing the workspace deletes that cache.

Stack

  • ServerFlask, Pillow, NumPy
  • ClientVanilla ES modules, Canvas 2D
  • Crop UICropper.js
  • Cutoutsrembg + ONNX Runtime
  • Carvingseam-carving / scikit-image
  • HEICpillow-heif

What it is good at

  • Fast, repeated edits on the same image
  • Correcting exposure and colour with a live histogram
  • Reading, editing, and stripping metadata
  • Animated GIF surgery without flattening the animation
  • Converting between formats with a size estimate before you commit

What it is not

There are no layers, no masks, and no non-destructive adjustment stack. It is a single-image workbench, not a Photoshop replacement. If you need compositing, this is the wrong tool, and it is not trying to be the right one.