读取、导出与格式转换
输入文件是 input.jpg,输出文件是 output.webp。下面的代码展示各 binding 的形状;参考输出已经由 govips 实际生成并完成格式与尺寸检查。


四个 binding 均已执行格式和尺寸检查;不同 libvips 版本产生的编码字节不要求完全一致。
package main
import ( "fmt" "os"
"github.com/davidbyttow/govips/v2/vips")
func main() { if err := vips.Startup(nil); err != nil { return err } defer vips.Shutdown()
image, err := vips.NewImageFromFile("input.jpg") if err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } defer image.Close()
params := vips.NewWebpExportParams() params.Quality = 82 data, _, err := image.ExportWebp(params) if err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } if err := os.WriteFile("output.webp", data, 0o644); err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) }}import sharp from 'sharp';
try { await sharp('input.jpg') .webp({ quality: 82 }) .toFile('output.webp');} catch (error) { console.error(error); process.exitCode = 1;}import sysimport pyvips
try: image = pyvips.Image.new_from_file("input.jpg", access="sequential") image.write_to_file("output.webp", Q=82)except pyvips.Error as error: print(error, file=sys.stderr) raise SystemExit(1) from error#!/usr/bin/env bashset -euo pipefail
vips copy input.jpg 'output.webp[Q=82]'不只是改扩展名
Section titled “不只是改扩展名”格式转换包含解码与重新编码。输出质量、元数据、ICC Profile、Alpha、动画页数和编码器可用性都可能变化。Quality = 100 或 Q=100 也不等于无损模式;无损是单独的编码选择。
- 本页选题和 govips 示例结构源自旧中文手记,已补充资源释放与错误处理。
- libvips WebP saver options
- sharp output options