跳转到内容

格式与 Codec 支持矩阵

复制本页

选择输出格式前,先明确一个事实:读取决于 libvips 编译时包含的 loader,写取决于 native exporter。 各格式支持不是 binding 的属性,而是底层 libvips 的能力。

参考 binding(libvips 8.17.3 / govips v2.19.0)的导出能力

Section titled “参考 binding(libvips 8.17.3 / govips v2.19.0)的导出能力”

govips ImageRef 提供以下 Export* 方法,代表 libvips 8.17.3 的原生写支持(取自 v2.19.0 源码):

导出 方法
JPEG ExportJpeg
PNG ExportPng
WebP ExportWebp
AVIF ExportAvif
HEIF ExportHeif
GIF ExportGIF
TIFF ExportTiff
JPEG 2000 ExportJp2k
JPEG XL ExportJxl
其它(magick) ExportMagick

读取由 LoadImageFromFile / LoadImageFromBuffer 自动按格式 dispatch 到 libvips 编译进来的 loader。因此:

  • 读支持范围 = 你那份 libvips 编译时包含的 loader 集合。
  • 若某种格式没有 native loader,govips 可能落到 Go 标准库 image 回退解码器——此时需要对应的 side-effect import(见故障排查 missing-codec)。
  • 检测动图/特殊格式可能需要较新 libvips(见 missing-codec 中 isAVIF 的已知缺陷)。
格式 读(参考) 写(参考) 备注
JPEG 支持 ExportJpeg 有损;含 EXIF/ICC
PNG 支持 ExportPng 无损;支持 alpha
WebP 支持 ExportWebp 有损/无损;支持动画
AVIF 支持 ExportAvif 有损;动画识别有版本身份
HEIF/HEIC 支持 ExportHeif 高位深
GIF 支持 ExportGIF 调色板;质量参数边界见 gif-quality
TIFF 支持 ExportTiff 多页
JPEG XL 支持 ExportJxl 视 libvips 编译配置
JPEG 2000 支持 ExportJp2k 视 libvips 编译配置
PDF 读(pdfload) 经 magick/native 写无专用 Export* 方法
BMP 读为主 经 magick 可能走 Go 兜底解码器

上表基于参考实现(libvips 8.17.3);sharp 捆绑的 8.18.7 与其格式能力可能不同,pyvips/CLI 与系统 8.17.3 一致。其它 binding 的行标为 comparison-pending,未经共享 Runner 逐字验证。

  • 动图 / 多页:加载全部页见 animation-multi-page;GIF 质量参数见 gif-quality。
  • 色彩 / ICC:CMYK 与 ICC 见 colour-shift;WebP 丢 ICC 是已知边界。
  • 无 native 格式:见 missing-codec,确认 Go side-effect import 与 libvips 编译配置。
  • 格式是否可用高度依赖你的 libvips 构建,而不是这本手册的版本快照。
  • 不要仅因为参考实现支持某导出,就假定 sharp 或 pyvips 在默认配置下行为一致。
  • govips v2.19.0 源码(image_export.go 的 Export* 方法)。
  • 本手册故障排查 missing-codec / animation-multi-page / gif-quality / colour-shift。

本页为版本快照,复核日期 2026-10-11;格式能力随 libvips 构建而变化。