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