You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Korge框架中Bitmap的premultiplied变量有什么作用?

premultiplied 变量含义与作用

位图premultiplied配置项截图

这个标记用来标识当前位图是否使用**预乘透明度(Premultiplied Alpha)**格式存储像素数据,是图形渲染领域非常基础的像素存储配置,具体逻辑和作用如下:

  • 核心存储逻辑
    普通非预乘格式的ARGB位图四个通道独立存储:A通道存透明度值,R/G/B通道存原始原色值,数值互不干扰。
    开启premultiplied的预乘格式下,R/G/B通道存储的数值会提前乘上当前像素的透明度占比:比如一个50%透明度的纯红色像素,非预乘存储值为A=128, R=255, G=0, B=0,预乘后R通道会变为255 * (128/255) ≈ 128,最终存储值为A=128, R=128, G=0, B=0;完全透明(A=0)的像素,预乘后R/G/B值全为0。
  • 核心作用
    • 提升渲染合成性能
      图像半透混合的标准公式为:最终像素 = 源像素颜色 * 源透明度 + 目标位置像素颜色 * (1 - 源透明度)。预乘格式的源像素R/G/B已经提前完成和透明度的乘法计算,GPU合成时可以直接跳过这一步运算,在高分辨率、多层级叠加的渲染场景下性能提升非常明显,这也是Android、iOS等系统默认开启位图预乘的核心原因。
    • 避免透明边缘出现杂色色晕
      对带透明通道的位图做缩放、模糊、旋转这类需要像素插值的操作时,如果用非预乘格式,透明区域残留的原始RGB值(通常是纯白或纯黑)会被插值算法纳入计算,最终半透边缘会混进不该有的白边/黑边。预乘格式下透明区域的R/G/B值全为0,插值过程不会引入杂色,边缘渲染效果更自然。
  • 使用注意事项
    用于Canvas、View系统、OpenGL渲染的位图必须保持预乘开启,否则会出现半透区域颜色过饱和、显示异常的问题;只有当你需要做像素级颜色处理(比如抠图、色彩校正、提取原始色值)时,才需要临时关闭预乘,处理完成后如果要用于显示,需要重新转回预乘格式。

内容的提问来源于stack exchange,提问作者xeno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 03:27:31