高级增强、局部对比与边缘
增强不是“让图片更好看”的开关。每个变体都先展示实际生成的输出,再给出对应 binding 的代码。
sigma: 2 降低高频细节。四个 binding 均已执行;govips 是当前参考输出,其他结果仍等待像素比较。

Generated with govips v2.19.0 / libvips 8.17.3.
image, err := vips.NewImageFromFile("input.jpg")if err != nil { return err }defer image.Close()if err := image.GaussianBlur(2); err != nil { return err }data, _, err := image.ExportWebp(vips.NewWebpExportParams())if err != nil { return err }return os.WriteFile("blur.webp", data, 0o644)await sharp('input.jpg').blur(2).webp({ quality: 82 }).toFile('blur.webp');image = pyvips.Image.new_from_file("input.jpg")image.gaussblur(2).write_to_file("blur.webp", Q=82)vips gaussblur input.jpg 'blur.webp[Q=82]' 2锐化显式设置 sigma: 2 及掩模参数;它也可能放大噪点和压缩伪影。

Generated with govips v2.19.0 / libvips 8.17.3.
if err := image.Sharpen(2, 2, 3); err != nil { return err }data, _, err := image.ExportWebp(vips.NewWebpExportParams())if err != nil { return err }return os.WriteFile("sharpen.webp", data, 0o644)await sharp('input.jpg').sharpen({ sigma: 2, m1: 1, m2: 3, x1: 2 }) .webp({ quality: 82 }).toFile('sharpen.webp');image = pyvips.Image.new_from_file("input.jpg")image.sharpen(sigma=2, x1=2, m2=3).write_to_file("sharpen.webp", Q=82)vips sharpen input.jpg 'sharpen.webp[Q=82]' --sigma 2 --x1 2 --m2 3Gamma 校正
Section titled “Gamma 校正”1.5 是本示例的指数,不是通用默认值。

Generated with govips v2.19.0 / libvips 8.17.3.
if err := image.Gamma(1.5); err != nil { return err }data, _, err := image.ExportWebp(vips.NewWebpExportParams())if err != nil { return err }return os.WriteFile("gamma.webp", data, 0o644)await sharp('input.jpg').gamma(1.5).webp({ quality: 82 }).toFile('gamma.webp');image = pyvips.Image.new_from_file("input.jpg")image.gamma(exponent=1.5).write_to_file("gamma.webp", Q=82)vips gamma input.jpg 'gamma.webp[Q=82]' --exponent 1.5govips 与 CLI 使用 Sobel;sharp 用同一 Sobel 核通过 convolve() 执行。三者都已生成结果,但卷积边界和编码差异仍应在目标场景中比较。

Generated with govips v2.19.0 / libvips 8.17.3.
if err := image.Sobel(); err != nil { return err }data, _, err := image.ExportWebp(vips.NewWebpExportParams())if err != nil { return err }return os.WriteFile("edge.webp", data, 0o644)await sharp('input.jpg').convolve({ width: 3, height: 3, kernel: [-1, 0, 1, -2, 0, 2, -1, 0, 1] }) .webp({ quality: 82 }).toFile('edge.webp');image = pyvips.Image.new_from_file("input.jpg")image.conv([[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]]).write_to_file("edge.webp", Q=82)vips sobel input.jpg 'edge.webp[Q=82]'sharp 专属高层入口
Section titled “sharp 专属高层入口”sharp 还直接提供 normalise()、clahe() 与任意 convolve()。本页只为实际执行的 Sobel 卷积展示跨 binding 输出;normalise() 和 clahe() 没有对应的 govips v2.19.0 公开高层入口,因此不展示伪造的 govips 实现。此处的缺口不表示 libvips 缺少 operation,也不应把内部 vipsGen* 当作稳定应用 API。