我目前正在用 C# 做一些图像处理工作,我对 Bgr32 Pixel 格式感到困惑。以下描述来自于microsoft msdn:http://msdn.microsoft.com/en-us/library/system.windows.media.pixelformats(v=vs.110).aspx
-
Bgr24是一种 sRGB 格式,每像素 24 位 (BPP)。每个颜色通道(蓝色、绿色和红色)分配为每像素 8 位 (BPP)。 ✓
-
Bgra32是一种 sRGB 格式,每像素 32 位 (BPP)。每个通道(蓝色、绿色、红色和 Alpha)分配有 8 位/像素 (BPP)。 ✓
-
Bgr32是一种 sRGB 格式,每像素 32 位 (BPP)。每个颜色通道(蓝色、绿色和红色)分配为每像素 8 位 (BPP)。 -> (⊙.☉)?WTF
3 个通道,每个 8 位 -> 3x8bit = 24bit
最后一个通道/剩余的 8 位是做什么用的?
提前致谢
它没有被使用,但将颜色表示为整数有实际原因,无论是读取还是写入,它都是对齐的。
最后它表示 24 位颜色,最接近的表示它的类型是 32 位整数。用两个整数来表示这种颜色会有点奇怪:一个 16 位(短)整数和一个 8 位(字节)整数。
现在有25%的空间没有被利用,这最终是一种浪费。
与 RGB24 相比,使用它更有意义,因为颜色由一个整数表示,而前者必须是 3 个字节。显然,您必须拆开包装才能获得不同的组件,但如今这些操作确实很便宜。
就我个人而言,仅当存在内存限制或任何其他类型的限制(例如硬件)时,我才会使用 RGB24。其他任何东西我都会选择 RGBA 甚至 PBGRA,因为它有很多好处,例如透明度,并且可以在位块传送操作期间节省额外的计算,以及更好地混合透明轮廓。
为了了解这种代表可以为您带来的好处,我建议您看一下这个问题:预乘 Alpha 合成(看看我发布的结果)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)