2014-04-18 4 views
5

현재 C#에서 일부 이미지 조작 작업을하고 있으며 Bgr32 픽셀 형식에 대해 혼란스러워합니다. 아래의 설명은 마이크로 소프트 MSDN 출신 : http://msdn.microsoft.com/en-us/library/system.windows.media.pixelformats(v=vs.110).aspxBgr32 PixelFormat의 네 번째 채널은 무엇입니까

  1. Bgr24 화소 당 24 비트 (BPP)와 sRGB를 포맷한다. 각 색상 채널 (파란색, 녹색 및 빨간색)은 픽셀 당 8 비트 (BPP)로 할당됩니다. ✓
  2. Bgra32은 픽셀 당 32 비트 (BPP)의 sRGB 형식입니다. 각 채널 (파란색, 녹색, 빨간색 및 알파)에는 픽셀 당 8 비트 (BPP)가 할당됩니다. ✓
  3. Bgr32은 픽셀 당 32 비트 (BPP)의 sRGB 형식입니다. 각 색상 채널 (파란색, 녹색 및 빨간색)은 픽셀 당 8 비트 (BPP)로 할당됩니다. -> (⊙.☉)? WTF

3 채널 각각 8 비트 -> 3x8bit = 24 비트의 마지막 채널/것이 무엇

/나머지 8 비트?

미리 감사

+1

나는 쇼 그 링크를 추가했습니다 PGBRA의 이점은 처음에는 분명하지 않지만 개념을 이해하면 결코 되돌아 가지 않을 것입니다. D – Aybe

답변

5

으로는 사용되지 않지만 정수 읽기 또는 쓰기를 들어,이 정렬되어 있는지 여부를 실제적인 이유가 같은 색상이 표현하는 데.

결국에는 24 비트 색상을 나타내고 가장 가까운 유형은 32 비트 정수를 나타냅니다. 16 비트 (짧은) 정수와 8 비트 (바이트) 정수의 두 정수로 이러한 색상을 표현하는 것은 약간 이상합니다.

이제 공간의 25 %가 사용되지 않아 궁극적으로 낭비입니다.

RGB24와 비교하면 색이 하나의 정수로 표시되는 방식으로 사용하는 것이 더 적합합니다. 전자의 경우와 같이 반드시 3 바이트가 필요합니다. 분명히 다른 구성 요소를 얻기 위해 포장을 풀어야하지만 오늘날이 작업은 실제로 저렴합니다.

개인적으로 메모리 제한이나 하드웨어와 같은 다른 유형의 제한이있는 경우에만 RGB24를 사용합니다. 그것이 투명성과 같은 많은 이점을 가지고 있고 블리 팅 연산 중에 여분의 계산과 투명한 윤곽에 대한 더 나은 블렌딩을 절약 할 수 있기 때문에 다른 무엇보다도 나는 RGBA와 심지어 PBGRA로 갈 것입니다. 당신이이 질문에 대해 살펴 걸릴 좋을 것 같은 표현이 당신에게 제공 할 수있는 혜택을

: Pre-multiplied alpha compositing은 (내가 게시 한 결과를 살펴보고는)

관련 문제