繁体   English   中英

如何区分32bit和24bit bmp文件? 另外,如何将32位bmp文件读入C ++数组?

[英]How to differentiate between a 32bit and 24bit bmp file? Also how do I read a 32bit bmp file into a C++ array?

我找不到在线可用的bmp文件之间的任何区别,因此我可以轻松分辨出它们是24位还是32位。

我需要使用C ++将32位bmp文件读入rgb数组,大多数教程仅适用于32位。

位图文件的格式在MSDN上进行了描述:它以14个字节的文件头开头,后跟一个位图信息头 ,其中包含您要在字段biBitCount查找的信息。

编辑:

正如iinspectable在评论中指出的那样,位图格式可能很复杂。 因此,对于Windows,最好的方法是使用Windows API访问上述结构的信息。

如果您在跨平台上工作,则必须注意许多细节:

  • 不同的文件格式版本 :实际上,您需要读取文件的偏移量14处的DWORD (32位无符号),以找出使用哪个版本的数据结构 您要查找的信息位于文件的偏移量24(核心版本)或28(其他版本)处。 这是一个WORD ,所以它是16位无符号的。

  • 文件格式可以被压缩。 核心版本不是这种情况。 对于其他版本,它在以下DWORD指示(偏移量为30)。

  • 所有整数都存储在little endian中。

但是,除了自己完成所有这些工作之外,您还可以考虑使用CImg或其他库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM