2011-01-31 65 views

回答

0

一个位图的像素使用的是ARGB_8888,RGB_565,ARGB_4444,或ALPHA_8编码。所以,你返回的短值必须恰好对应于这些格式中看起来略带粉红色的值。

如果你想有一个灰度位图,你可以只(如果你使用ARGB_8888对于8位的最大珍贵的颜色成分)具有在0-256的范围值。因此,您需要将短片映射到该范围内的值,然后为每个RGB组件复制该值。

+0

我不知所措。我相信我的价值观是一个12位的范围内,但我不能确定如何得到一个不错的灰度 - 我试着用0xFFF的正常化,然后铸造为int * 256,但这只会让一切变成黄色。我也非常肯定这个位图是ARGB,但是我不知道更多。 – 2011-01-31 03:16:19

+0

好吧,通过取高8位将12位值标准化为8位值:val = 0xFF&(val >> 4)`然后在每个RGB位置复制该8位值,并将A设置为255,所以:`0xFF000000 +(val << 16)+(val << 8)+ val` – 2011-01-31 03:23:13

2

而不是在每个RGB通道中复制8位强度,您可以使用强度作为alpha通道。在这个方案中,0对应透明(背景颜色),255对应完全不透明(黑色,或者任何你想要的颜色 - 甚至是粉色)。这个想法与Jason LeBrun的建议类似:取每个值的高位8位,向左移位24位,然后按比例与您想要用于全强度的颜色进行按位或(如果您想用黑色表示全部强度完全强度)。