通道、Alpha 与像素组合
通道不是“颜色数组”的抽象细节。下面每项先展示实际输出,紧接着给出生成它的 binding 配置。
提取红色通道
Section titled “提取红色通道”输出为单 band PNG,以灰度表示原图红色通道的强度。

Generated with govips v2.19.0 / libvips 8.17.3.
if err := image.ExtractBand(0, 1); err != nil { return err }
return exportPNG(image, "red-channel.png")await sharp('input.svg').extractChannel('red').png().toFile('red-channel.png');image = pyvips.Image.new_from_file("input.svg")
image.extract_band(0).write_to_file("red-channel.png")vips extract_band input.svg red-channel.png 0 --n 1提取 Alpha 通道
Section titled “提取 Alpha 通道”Alpha 被导出为单 band PNG,便于检查遮罩本身,而不是把它当作 RGB 图像。

Generated with govips v2.19.0 / libvips 8.17.3.
if err := image.ExtractBand(3, 1); err != nil { return err }
return exportPNG(image, "alpha-channel.png")await sharp('input.svg').extractChannel('alpha').png().toFile('alpha-channel.png');image = pyvips.Image.new_from_file("input.svg")
image.extract_band(3).write_to_file("alpha-channel.png")vips extract_band input.svg alpha-channel.png 3 --n 1重新组合 RGBA
Section titled “重新组合 RGBA”govips 代码显式拆分并 BandJoin;sharp 的 ensureAlpha() 保证输出含 Alpha,但不是同名的逐 band 组合 API。两种语义不应视为完全等价。

Generated with govips v2.19.0 / libvips 8.17.3.
bands, err := image.BandSplit()
if err != nil { return err }
defer closeAll(bands)
if err := bands[0].BandJoin(bands[1:]...); err != nil { return err }
return exportPNG(bands[0], "rebuilt-rgba.png")await sharp('input.svg').ensureAlpha().png().toFile('rebuilt-rgba.png');image = pyvips.Image.new_from_file("input.svg")
image.write_to_file("rebuilt-rgba.png")vips copy input.svg rebuilt-rgba.png以 #f8fafc 背景展平后输出 WebP;导出到不支持 Alpha 的格式前,应明确决定背景色。

Generated with govips v2.19.0 / libvips 8.17.3.
if err := image.Flatten(&vips.Color{R: 248, G: 250, B: 252}); err != nil { return err }
return exportWebp(image, "flattened.webp")await sharp('input.svg').flatten({ background: '#f8fafc' }).webp({ quality: 82 }).toFile('flattened.webp');image = pyvips.Image.new_from_file("input.svg")
image.flatten(background=[248, 250, 252]).write_to_file("flattened.webp", Q=82)vips flatten input.svg 'flattened.webp[Q=82]' --background 248,250,252binding 边界
Section titled “binding 边界”sharp 还提供 threshold()、boolean()、dilate()、erode() 等高层入口。govips 当前公开包装层没有这些同名入口,因此本页不把它们伪装成跨 binding 等价操作。