常用操作跨绑定映射
同一产品意图在不同语言绑定(binding)或入口中的 API 命名与参数单位并不相同。govips 是本手册的参考实现;sharp、pyvips 与 CLI 的等价入口用于对照,不代表与 govips 语义逐项一致。
比较边界:下表 govips 列取自 v2.19.0 源码;sharp / pyvips / CLI 列目前标注为比较待定(
comparison-pending),具体参数默认行为需按对应文档核对。
| 意图 | govips (v2.19.0) | sharp | pyvips | vips CLI |
|---|---|---|---|---|
| 从文件加载 | vips.NewImageFromFile |
sharp(path) |
pyvips.Image.new_from_file |
vips ... file |
| 从内存缓冲区加载 | LoadImageFromBuffer |
sharp(buf) |
new_from_buffer |
通过 stdin 或文件 |
| 捕获全部页/帧 | importParams.NumPages.Set(-1) |
sharp(input, { pages: -1 }) |
n=-1 参数 |
由 loader 参数 [n=-1] 控制 |
| 导出到缓冲区/流 | ExportWebp(params) / ExportJpeg(params);流式 SaveToWriter* |
.toBuffer() |
write_to_buffer |
由输出格式参数驱动 |
| 意图 | govips (v2.19.0) | sharp | pyvips | vips CLI |
|---|---|---|---|---|
| 按目标尺寸缩略图 | NewThumbnailWithSizeFromFile / LoadThumbnailFromFile |
.resize(w, h, { fit }) |
thumbnail / thumbnail_image |
vips thumbnail |
| 按相对比例系数缩放 | Resize(scale, kernel) / ResizeWithVScale(h, v, kernel) |
.resize(...)(按像素宽高) |
resize(scale) |
vips resize |
| 固定角度旋转(90°/180°/270°) | Rotate(angle)(Angle 枚举) |
.rotate(90 | 180 | 270) |
rot(angle) |
vips rot |
| 任意角度旋转 | Similarity(scale, angle, ...) |
.rotate(angle) |
similarity(angle=...) / rotate(angle) |
vips similarity |
| 翻转(垂直 / 水平) | Flip(DirectionVertical | DirectionHorizontal) |
.flip()(垂直)/ .flop()(水平) |
flip(axis) / flipver() / fliphor() |
vips flip |
| 矩形区域裁剪 | ExtractArea(left, top, width, height) |
.extract({ left, top, width, height }) |
crop(left, top, width, height) |
vips crop |
| 意图 | govips (v2.19.0) | sharp | pyvips | vips CLI |
|---|---|---|---|---|
| 图层叠加合成 | Composite / CompositeMulti |
.composite([...]) |
composite / composite2 |
vips composite / vips composite2 |
| 多图网格拼接 | ArrayJoin |
通过 create 画布配合 .composite() |
arrayjoin |
vips arrayjoin |
| 色彩空间与 ICC 变换 | TransformICCProfile(含 TransformICCProfileWithFallback) |
.toColourspace() / .withIccProfile() |
colourspace() / icc_transform() |
vips colourspace / vips icc_transform |
| 导入与解码参数 | ImportParams |
内置于 sharp(input, options) |
加载函数关键字参数 | 文件名后的 [option=value] |
- 单位差异:govips 与 libvips 底层的
Resize接收的是相对缩放系数(1.0表示 100%),而Thumbnail*和sharp.resize(w, h)接收的是目标像素宽高。不要用sharp.resize(w, h)的语义去理解 govips 的Resize。 - 旋转入口差异:在 govips 中,90° 倍数的正交旋转使用枚举型的
Rotate,而任意角度旋转通过Similarity完成;sharp 则将两者合并在.rotate(angle)中。 - 加载与缩略图路径:
Thumbnail*走 libvips 按目标尺寸收缩解码(shrink-on-load)的路径,与先完整解码整幅大图再调用Resize的内存和耗时特征不同。 - 动图处理:缩放或旋转动图需先用
NumPages=-1加载全部帧,详见动图只剩第一帧或变成纵向长图。
来源与证据边界
Section titled “来源与证据边界”- govips v2.19.0 源码(
NewImageFromFile、LoadImageFromBuffer、NumPages、NewThumbnailWithSizeFromFile、Resize/ResizeWithVScale、Rotate、Similarity、Flip、ExtractArea、Composite、ArrayJoin、TransformICCProfile、ExportWebp)。 - sharp / pyvips / CLI 列目前标注为
comparison-pending。
以上映射以满足产品意图为准;具体参数默认值详见各语言绑定文档,并以本手册锁定的参考基线为准。