跳转到内容

四个入口的默认参数差异

复制本页

很多人认为“相同输入 + 相同意图 = 相同输出”,但四个常用入口对同一意图暴露了不同的默认参数。最稳妥的工程假设是不存在逐字节一致;跨语言比较前请先核对默认值。

NewWebpExportParams() 返回:

字段 默认值
Quality 75
Lossless false
NearLossless false
ReductionEffort 4
StripMetadata false
TargetSize 0(不启用)

NewJpegExportParams() 返回:Quality 80、Interlace true。

NewGifExportParams() 返回:Quality 75、Effort 7、Bitdepth 8。注意 Quality 在原生 gifsave 下不生效(见GIF 的 Quality 参数为何不生效),Effort 与 Bitdepth 才真正影响输出。

本手册的实战示例参考基线显式把 WebP 输出质量设为 82,这是显式传入的参数,不是 govips 的默认值(75)。

  • 编解码 quality 语义:画质与体积的权衡在不同格式之间不同,Quality 数值不能跨格式直接等同于“清晰度”。
  • 缩放语义:govips Resize 是相对比例系数(且需指定 Kernel 参数),与 sharp.resize(w, h) 的目标像素尺寸语义不同。
  • 元数据默认行为:govips 中 StripMetadata 默认为 false,即默认保留并传递元数据(见转换后偏色、ICC 丢失或 CMYK 失真)。
  • 动图页数:默认只加载第一帧(n=1),处理动图需显式设置 NumPages=-1(见动图只剩第一帧或变成纵向长图)。
  • sharp 0.35.5 预构建包自带 libvips 8.18.7,与系统参考版本 8.17.3 不同。
  • pyvips 与 CLI 虽然和 govips 共用系统 libvips 8.17.3,但高层封装所传的默认参数仍需逐项确认。
  • 当前跨入口验证主要核对格式、尺寸与通道数等元数据,像素级比较仍标注为 comparison-pending。
  • 若你已经在代码中显式覆盖了所有相关编码与插值参数,默认值差异的影响就会大幅降低。
  • 不同 libvips 版本之间的底层默认值也可能演进,生产升级时请勿只依赖本页快照。
  • govips v2.19.0 源码(NewWebpExportParams、NewJpegExportParams、NewGifExportParams 的默认值)。
  • 本手册验证环境基线(系统 libvips 8.17.3、sharp 自带 8.18.7)。

本页重点记录参考实现 govips 的默认值;sharp / pyvips / CLI 的跨版本默认行为对照标注为 comparison-pending。