// the find
h2non/imaginary
Fast, simple, scalable, Docker-ready HTTP microservice for high-level image processing
imaginary is an HTTP microservice that wraps libvips behind a REST API, letting you resize, crop, watermark, and convert images by hitting an endpoint rather than linking a C library into your app. It's for teams that want image processing as a sidecar or shared service rather than bundled into each application. Essentially a thinner, faster alternative to running ImageMagick behind a web server.
libvips is genuinely the right choice here — 4-8x faster than ImageMagick for JPEG work, and the memory footprint stays predictable under load. The pipeline endpoint lets you chain multiple transforms in a single HTTP round trip, which matters when you're batching thumbnail generation. URL signature support (HMAC-SHA256) is baked in, so you can expose this to the public web without every random request being able to hit arbitrary resize operations. The Docker story is straightforward and the Fly.io one-click deploy is a nice touch for small teams that don't want to manage infra.
The project has gone quiet — last meaningful activity was years ago and the benchmark dates from Go 1.4.2 with libvips 7.x, which tells you something about when it was last seriously exercised. There's no built-in caching layer: if two requests ask for the same 800×600 crop of the same remote image, it fetches and processes it twice. The node.js client listed under 'Clients' is the only one, and it's maintained by the same author, so the ecosystem is thin. Output formats are stuck at JPEG/PNG/WebP — no AVIF support, which in 2025 is a meaningful gap for anyone optimizing web image delivery.