2011-01-31 66 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位,然後按比例與您想要用於全強度的顏色進行按位或(如果您想用黑色表示全部強度完全強度)。