What is the libvips ecosystem?
libvips is an image-processing library. The vips command invokes operations directly, while govips, sharp, and pyvips expose related capabilities to Go, Node.js, and Python. They share many underlying concepts, but their APIs, defaults, resource management, and error models are not identical.
A mental map
Section titled “A mental map”| Layer | Responsibility | Typical entry points |
|---|---|---|
| libvips | Loaders, operations, caching, and savers | C API, vips |
| Language binding | Maps capabilities into language conventions | govips, sharp, pyvips |
| Application pipeline | Combines input, transforms, output, and observability | Services, queues, batch jobs |
A central libvips idea is demand-driven evaluation: a pipeline can describe operations first and compute the needed regions when output pixels are requested. This can reduce intermediate-image pressure, but it does not make every input, saver, or binding truly streaming.
Choosing an interface
Section titled “Choosing an interface”- Start with govips for an existing Go service that can manage native dependencies.
- Start with sharp for a Node.js service that benefits from a chainable pipeline.
- Start with pyvips for Python automation or scientific workflows.
- Start with the vips CLI when investigating an operation or preparing a minimal reproduction.
Complete installation and environment checks, then continue to reading, writing, and conversion.