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

时间:2014-04-18 08:41:48

标签: c# .net 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
  4. 3个通道,每个8位 - > 3x8bit = 24bit

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

    提前致谢

1 个答案:

答案 0 :(得分:5)

没有使用它,但是用一个整数表示的颜色有实际的原因,无论是阅读还是写作,都是对齐的。

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

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

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

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

对于此类表示可以为您提供的好处,我建议您查看这个问题:Pre-multiplied alpha compositing(看看我发布的结果)