RGB顏色表示方法,red = (rgb & 0x00ff0000) >> 16是什麼意思?

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


發佈了22 篇原創文章 · 獲贊 15 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章