我目前正在用C#做一些图像处理工作,我对Bgr32 Pixel格式感到困惑。以下描述来自Microsoft msdn:http://msdn.microsoft.com/en-us/library/system.windows.media.pixelformats(v=vs.110).aspx
3个 channel ,每个8位-> 3x8bit = 24bit
最后一个 channel 是什么/剩余的8位是什么?
提前致谢
最佳答案
它不使用,但是将颜色表示为整数有实际原因,无论是读取还是写入,它都是对齐的。
最后,它表示24位颜色,最接近的类型是32位整数。用两个整数表示这种颜色有点奇怪:一个16位(短)整数和一个8位(字节)整数。
现在没有使用25%的空间,这最终是浪费。
与RGB24相比,以一种颜色用一个整数表示颜色的方式使用它更为有意义,因为在前一个整数上颜色必须为3个字节。显然,您必须打开包装才能获得不同的组件,但是如今这些操作确实很便宜。
就个人而言,仅当存在内存限制或任何其他类型的限制(例如硬件)时,我才使用RGB24。我要使用RGBA甚至PBGRA的其他任何东西,因为它具有许多优点,例如透明性,并且在blittting操作期间省去了额外的计算,并且可以更好地融合透明轮廓。
为了获得这种表示形式可以给您带来的好处,我建议您看一下这个问题:Pre-multiplied alpha compositing(看一下我发布的结果)