高级增强、局部对比与边缘检测
图像增强不是一个“让图片更好看”的笼统开关。下面每个变体都先展示实际生成的输出,再给出对应入口的代码。
sigma: 2 用于降低高频细节。参考输出由 govips v2.19.0 / libvips 8.17.3 生成。

由 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 及掩模参数;注意过度锐化也可能放大噪点和压缩伪影。

由 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 是本示例所用的指数参数,而非通用默认值。

由 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 与 pyvips 使用同一 Sobel 核通过卷积(convolve / conv)执行。四个入口均已生成输出,但卷积边界处理和编码差异仍应在目标场景中核对。

由 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 边缘检测展示跨绑定输出;normalise() 和 clahe() 在 govips v2.19.0 中没有对应的公开高层入口,因此不展示拼凑的 govips 实现。此处的差异不代表底层 libvips 缺少对应操作,也不应把 govips 内部的 vipsGen* 函数当作稳定公开 API 调用。