通道、Alpha 与像素组合
通道不是抽象的“颜色数组”。下面每项操作先展示实际生成的输出,紧接着给出生成它的各入口代码。
提取红色通道
Section titled “提取红色通道”输出为单通道(1 band)PNG,以灰度表示原图红色通道的强度。

由 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 通道被导出为单通道 PNG,便于直接检查遮罩本身,而不是把它当作 RGB 图像。

由 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 通道,但并非同名的逐通道组合 API,两种语义不应视为完全等价。

由 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 背景色展平(flatten)后导出为 WebP;导出到不支持透明通道的格式前,应明确指定背景色。

由 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,252跨入口能力边界
Section titled “跨入口能力边界”sharp 还提供 threshold()、boolean()、dilate()、erode() 等高层入口。govips 当前公开包装层没有这些同名方法,因此本页不把它们伪装成跨绑定等价操作。