2011-05-14 26 views
14

任何人都可以爲我解釋java如何在TYPE_INT_RGB和TYPE_INT_ARGB中存儲顏色?
這些代碼行是否適用於計算紅色,綠色和藍色?TYPE_INT_RGB和TYPE_INT_ARGB的格式

int red= (RGB>>16)&255; 
int green= (RGB>>8)&255; 
int blue= (RGB)&255; 

那麼TYPE_INT_ARGB呢?如何從TYPE_INT_ARGB獲取紅色,綠色和藍色?

+0

更好的代碼,255可能是'0xff'或'0b1111_1111' – Thumbz 2014-05-07 07:52:35

回答

22

TYPE_INT_ARGB表示顏色爲int(4字節),其中位24-31爲紅色通道,紅色通道爲16-23,綠色爲8-15,藍色爲0-7。

TYPE_INT_RGB以與TYPE_INT_ARGB相同的方式表示顏色爲int(4字節),但忽略alpha通道(或位24-31爲0)。

看看java.awt.Colorjava.awt.image.BufferedImage的javadoc。

+1

我不知道這些東西之前:-)很高興知道別人已經爲你搜索:-) – 2012-07-01 16:11:09

0

這些是指示BufferedImage實例的顏色模型的常數值。這些值本身不存儲顏色。

7

您對TYPE_INT_RGB正確。等效TYPE_INT_ARGB代碼將是:

int rgb = rgbColor.getRGB(); //always returns TYPE_INT_ARGB 
int alpha = (rgb >> 24) & 0xFF; 
int red = (rgb >> 16) & 0xFF; 
int green = (rgb >> 8) & 0xFF; 
int blue = (rgb  ) & 0xFF; 

拼寫出來字節的色彩元素,從最顯著到最低顯著,你ARGB,故名。