2011-05-14 5 views
14

누구든지 나를 위해 TYPE_INT_RGB 및 TYPE_INT_ARGB에서 Java 저장소 색을 설명 할 수 있습니까?
빨강, 녹색 및 파랑을 계산할 때이 코드 라인이 제대로 작동합니까?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

답변

22

TYPE_INT_ARGB은 알파 채널이 비트 24-31, 빨강 채널이 16-23, 녹색이 8-15, 파란색이 0-7 인 int (4 바이트)의 색상을 나타냅니다.

TYPE_INT_RGBint (4 바이트)로 색을 나타내는 TYPE_INT_ARGB 동일한 방법 INT, 그러나 알파 채널을 무시 (또는 비트 24-31은 0이다).

javadoc이 java.awt.Colorjava.awt.image.BufferedImage 인 것을보십시오.

+1

전에 이러한 물건에 대해 알지 못했지만 :-) 다른 사람이 당신을 위해 이것을 검색했음을 알게되어 기쁩니다 :-) –

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, 따라서 이름을 얻는다.