RGB顏色是由紅(Red)、綠(Green)、藍(Blue)三原色組成的,所以可以使用這三個顏色的組合來代表一種具體的顏色,其中R、G、B的每個數值都位於0-255之間。在表達顏色的時候,即可以使用三個數字來表達,也可以使用一個格式如0X00RRGGBB這樣格式的十六進制來表達,下面是常見顏色的表達形式:
紅色:(255,0,0)或0x00FF0000
綠色:(0,255,0)或0x0000FF00
藍色:(255,255,255)或0x00FFFFFF
在編寫Android彩色圖像處理程序時,需要對圖像進行灰度化和二值化處理,很多地方不懂,在借鑑別人的代碼是看到這樣的表示:
red = (rgb & 0x00ff0000) >> 16;
首先將顏色值與十六進制表示的00ff0000進行“與”運算,運算結果除了表示紅色的數字值之外,GGBB部分顏色都爲0,在將結果向右移位16位,得到的就是紅色值。所以這句代碼主要用來從一個顏色中抽取其組成色---紅色的值。
int color = 0x0012faff;
例如:我們已經獲取一種顏色,如上所示color。那麼下面這段代碼的結果將會是18,它是0x12的十進制表示值。
int redOnly = color & 0x00ff0000;
System.out.println(redOnly >> 16);
同樣的,我們也可以通過以下代碼得到green和blue的值:
int green = (color & 0x0000ff00) >> 8; // 250 = 0xfa
int blue = (color & 0x000000ff); // 255 = 0xff