Bands、Alpha 与透明度
Alpha 通道是描述覆盖程度的额外 Band,但“有四个 Band”并不自动证明第四个就是 Alpha。图像解释(interpretation)、格式和元数据需要一起判断。
棋盘格仅用于页面展示透明区域,不属于图片像素。
在常见的 8-bit RGBA 图像中,Alpha 值 0 表示完全透明,255 表示完全不透明。浮点图像或其他位深可能使用不同范围,所以不要把 0..255 写死到通用 Pipeline 中。
透明像素仍然保存颜色值。一个看不见的像素可以是“透明黑”或“透明白”,当它被缩放、模糊或合成时,这些隐藏颜色可能影响边缘。
Premultiplication
Section titled “Premultiplication”预乘 Alpha(premultiplied alpha)会先用 Alpha 缩放颜色通道。某些卷积或插值操作在预乘表示上更可靠,但导出前通常要按目标编码器的预期恢复表示。
一个稳健的处理顺序通常是:
- 确认图像是否真的拥有 Alpha。
- 在需要的操作前 premultiply。
- 完成缩放、模糊或合成。
- unpremultiply。
- 按输出格式决定保留 Alpha 还是 flatten 到背景色。
本页的 govips 示例调用 Resize。在锁定的 v2.19.0 源码中,该方法会在缩放前执行 PremultiplyAlpha,并在缩放后执行 UnpremultiplyAlpha;这是经过版本核对的 binding 行为,不应推广成所有 binding 和所有操作的默认保证。