1

有人可以解释使用位移运算符在以下语句右侧提取颜色分量的计算吗?

                uint alpha = (currentPixel & 0xff000000) >> 24; // alpha component

                uint red = (currentPixel & 0x00ff0000) >> 16; // red color component

                uint green = (currentPixel & 0x0000ff00) >> 8; // green color component

                uint blue = currentPixel & 0x000000ff; // blue color component
4

1 回答 1

2

Lumia Imaging SDK 使用ARGB 颜色格式公开颜色值。它将使用 8 位对每个颜色分量进行编码,但为了简单/高效,它将在单个 uint32 中存储和公开所有四个。

这意味着每个颜色分量都按照您看到的顺序在 int 中“布局”:8 位用于 alpha,8 位用于红色,8 位用于绿色,8 位用于蓝色:ARGB

要提取单个组件,您需要对 int 执行一些按位运算。首先,您需要执行 and 操作来挑选出您感兴趣的位 ( using the & operator),然后执行按位右移 ( the >> operator) 以将您想要的位放入 [0, 255] 范围内。

于 2015-04-03T17:45:22.740 回答