c++ - BMP文件格式混淆

标签 c++ windows bmp

我正在用 C++ 编写我自己的 BMP 文件阅读器,并且有一些我不太确定的文档。

BMP File Format 的 Wiki 页面中, 有一张图,列出了所有在野外使用的 BMP 实用格式。

enter image description here

对于BITMAPINFOHEADER中的32 bpp BI_RGB这样8.8.8.0.8的值,是否每个值都代表可用于表示 RGBAX 中每个颜色 channel 的位?如果是这种情况,“X”是什么?为什么有 8 位专门用于它?我可以将它用于 alpha channel 吗?

最佳答案

R.G.B.A.X 符号曾经记录在维基百科上(甚至有一些彩色图表),但它已被那里的一些爱管闲事的人删除。但是,您仍然可以在文章的历史记录中找到它。参见 here

无论如何,8.8.8.0.8意味着每个像素有 32 位(因为所有数字的总和等于 32)和 0意味着,没有用于 Alpha channel 的位(Alpha channel 不以这种格式编码,也不以任何托盘化像素格式编码)。最后8 (在第五个 X 位置)表示在此编码中每个像素有 8 个未使用的位。

此外,下面的维基百科文章和图表比 MSDN 上有关该主题的任何内容都更完整。请参阅 Chris Cox 对 MSDN 文档的批评 here : enter image description here

关于c++ - BMP文件格式混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39563524/

相关文章:

c++ - 简化 __VA_ARGS__ 问题 : cannot extract NULL

bitmap - 是否可以将 JPG 制成的 BMP 重新编码回 JPG 而不会降低质量?

c - 在 C 中加载 8bpp 灰度 BMP

C 误读.bmp 文件的分辨率

java - 无法在 Windows 上使用主/从机在 Jenkins 上运行 mvn.bat

windows - 我可以在不使用寄存器的情况下在 .text 区域实现计数器吗?

c++ - 依赖整数 boolean 转换的枚举

c++ - 通知调用者线程已完成

C++ 如何使用 OpenSSL 验证 Google JWT (RS256)

sql-server - 如何在 SSIS 中创建日志文件