我无法找到在线提供的bmp文件之间的任何区别,因此我可以很容易地判断它们是24位还是32位。
我需要使用C ++将32位bmp文件读入rgb数组,大多数教程仅存在32位。
答案 0 :(得分:0)
位图文件的格式描述为here on MSDN:它以14字节的文件头开头,后跟bitmap info header,其中包含您在字段中查找的信息{ {1}}。
<强> 编辑: 强>
正如评论中的iinspectable所指出的,位图格式可能很复杂。因此,对于Windows,最好使用Windows API访问上述结构的信息。
如果您正在跨平台工作,那么您必须自己处理许多细节:
不同的file format versions:事实上,您需要在文件的偏移量14处读取biBitCount
(32位无符号)以找出which version of the data structure。您要查看的信息是文件的偏移24(核心版本)或28(其他版本)。它是WORD
,所以16位是无符号的。
可以压缩文件格式。核心版本不是这种情况。对于其他版本,它在以下DWORD
中指示(在偏移30处)。
所有整数都存储在little endian中。
但是,您可以考虑CImg或其他库,而不是自己完成所有这些操作。