如何选择语言绑定与入口
先看程序已经跑在哪种语言里,再决定图像处理入口。四个常用入口共享 libvips 的操作模型,但安装方式、默认值、资源释放和暴露出来的操作子集都不相同。本页帮助你在四个入口之间分流,不把它们当成可直接互换的 API。
先看你已经在用的语言
Section titled “先看你已经在用的语言”| 你已经有 | 从这里进入 | 接着读 |
|---|---|---|
| Go 服务,并能处理 CGO 与系统库 | govips | govips API 模型 |
| Node.js 服务,希望用链式 Pipeline | sharp | 15 分钟 Quickstart |
| Python 自动化、研究或服务 | pyvips | 15 分钟 Quickstart |
| 要确认某个操作,或做最小复现 | vips CLI | 安装与环境检查 |
CLI 适合把一个操作缩成可重复的命令。它不是另外一种常驻服务运行时,也不应被当成第四个语言绑定。
四个入口分别承担什么
Section titled “四个入口分别承担什么”- govips 把 libvips 放进 Go 进程。调用方要自己完成
Startup、Shutdown和每个ImageRef的Close。流式读取、取消和引用计数都集中在这个入口。 - sharp 把 Pipeline 收成 Node.js 链式调用。预构建包携带自己的 libvips,因此它的库版本可以和系统里的 libvips 不同。
- pyvips 把操作映射成 Python 方法,通常链接系统 libvips。它适合和现有 Python 工具链协作,但对象生命周期规则与 govips 不同。
- vips CLI 直接暴露操作名和参数。排查“这个操作本身是否可用”时,先用它排除语言绑定封装层的影响。
- 用安装与环境检查确认语言绑定版本和它实际加载的 libvips 版本。
- 用15 分钟 Quickstart跑通同一张输入上的缩略图。
- 如果选择 govips,再读govips API 模型,区分手写封装与自动生成操作。