Bgr32 PixelFormat中的第四个通道是什么?

wis*_*chi 7 .net c# wpf image-processing

我目前正在C#中做一些图像处理工作,我对Bgr32像素格式感到困惑.以下描述来自microsoft msdn:http://msdn.microsoft.com/en-us/library/system.windows.media.pixelformats( v = vs.110).aspx

  1. Bgr24是一种sRGB格式,每像素24位(BPP).每个颜色通道(蓝色,绿色和红色)每像素分配8位(BPP).✓
  2. Bgra32是一种sRGB格式,每像素32位(BPP).每个通道(蓝色,绿色,红色和alpha)分配每像素8位(BPP).✓
  3. Bgr32是一种sRGB格式,每像素32位(BPP).每个颜色通道(蓝色,绿色和红色)每像素分配8位(BPP). - >(⊙.☉)?WTF

3个通道,每个8位 - > 3x8bit = 24位

最后一个频道/剩余的8位是什么?

提前致谢

Ayb*_*ybe 6

它没有被使用,但是具有表示为整数的颜色具有实际的原因,无论是读取还是写入,它都是对齐的.

最后,它表示24位颜色,最接近的类型表示它是32位整数.用两个整数表示这种颜色会有点奇怪:一个16位(短)整数和一个8位(字节)整数.

现在没有使用25%的空间,这最终是浪费.

与RGB24相比,使用它的方式更有意义,颜色由一个整数表示,而前者则必须为3个字节.显然你必须打开它来获得不同的组件,但这些操作今天真的很便宜.

就个人而言,只有存在内存限制或任何其他类型的约束(例如硬件)时,我才会使用RGB24.还有其他任何东西我都会选择RGBA甚至是PBGRA,因为它有许多好处,比如透明度和在blitting操作期间额外的计算,以及更好地混合透明轮廓.

对于此类表示可以为您提供的好处,我建议您先看一下这个问题:预乘alpha合成(看看我发布的结果)