| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-03-18 | 2.8 kB | |
| v1.8.0 source code.tar.gz | 2026-03-18 | 9.2 MB | |
| v1.8.0 source code.zip | 2026-03-18 | 9.8 MB | |
| Totals: 3 Items | 19.0 MB | 0 | |
imagor 1.8 — Introducing imagorface Face Detection
This release adds a pluggable region detection pipeline to imagor, and introduces imagorface — the first detector plugin — bringing face-centred smart crop and redaction to imagor. It wires directly into imagor's new detection pipeline — no third-party API, no per-call cost, cascade embedded in the binary.
https://github.com/cshum/imagorface
New in imagor: Detector Interface
imagor now defines a Detector interface for region-of-interest detection:
:::go
type Detector interface {
Startup(ctx context.Context) error
Detect(ctx context.Context, imagePath string, blob *Blob) ([]DetectorRegion, error)
Shutdown(ctx context.Context) error
}
DetectorRegion carries a normalised [0.0, 1.0] bounding box with an optional class Name (e.g. "face") and confidence Score. Detection runs on a downscaled probe image (capped at --vips-detector-probe-size, default 400 px) derived from the raw decoded pixels, keeping overhead minimal.
Multiple detectors can be composed — their results are merged and all downstream features (smart crop, redact(), /meta) see the combined set:
:::go
vipsprocessor.NewProcessor(
vipsprocessor.WithDetectors(faceDetector, objectDetector),
)
New Filters (imagor)
These filters are part of imagor core and work with any Detector implementation:
filters:draw_detections() — draws colour-coded bounding boxes for all detected regions. Each class name is assigned a deterministic colour via FNV-32a hash over a 12-colour palette (same name → same colour always).
filters:redact([mode[,strength]]) — obscures all detected regions with rectangular masks:
redact()— Gaussian blur, sigma 15redact(blur,25)— blur with custom sigmaredact(pixelate)— pixelate, block size 10redact(pixelate,20)— pixelate with custom block sizeredact(black)/redact(white)/redact(ff0000)— solid colour fill
filters:redact_oval([mode[,strength]]) — same as redact but applies an elliptical mask to each region, producing oval-shaped redactions that closely follow the contour of a face.
filters:pixelate([block_size]) — standalone pixelation of the entire image (no detector required).
Detection in /meta — /meta responses now include a detected_regions array when detection is triggered. Detection only runs when semantically requested: smart, draw_detections(), or redact() in the URL.
What's Changed
- feat: detector pipeline with redact() redact_oval() filters by @cshum in https://github.com/cshum/imagor/pull/778
Full Changelog: https://github.com/cshum/imagor/compare/v1.7.5...v1.8.0