跳转到内容

常用操作跨绑定映射

复制本页

同一产品意图在不同语言绑定(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 加载全部帧,详见动图只剩第一帧或变成纵向长图。
  • govips v2.19.0 源码(NewImageFromFile、LoadImageFromBuffer、NumPages、NewThumbnailWithSizeFromFile、Resize / ResizeWithVScale、Rotate、Similarity、Flip、ExtractArea、Composite、ArrayJoin、TransformICCProfile、ExportWebp)。
  • sharp / pyvips / CLI 列目前标注为 comparison-pending。

以上映射以满足产品意图为准;具体参数默认值详见各语言绑定文档,并以本手册锁定的参考基线为准。