C ++:检查bmp文件是否合法

时间:2010-07-27 20:48:04

标签: c++ visual-c++

我正在使用C ++(Visual Studio),我想检查一个.bmp文件是否合法(不是一些重命名的virus.exe),然后用户可以通过互联网与使用我的应用程序的其他用户共享它。 我正在使用DirectX 2d渲染和增强框架。

是否有(简单?)方法来验证位图?

感谢。

3 个答案:

答案 0 :(得分:3)

您始终可以检查位图标头以确保其有效。可以找到位图标头的格式here

答案 1 :(得分:2)

您可以尝试使用Win32 LoadImage加载位图,这应该会因格式错误的位图而失败。

正如其他人所提到的,您可以检查位图标题并检查文件大小(基于您在标题中找到的内容)等内容。这比LoadImage要快,但编写和测试的代码很多。位图标题有许多合法的变体。

据推测,LoadImage已经过充分测试,因为它已经存在了。

答案 2 :(得分:0)

检查此库: http://easybmp.sourceforge.net/

您可以使用此功能:

bool ReadFromFile(char* FileName). 

如果给定文件不是有效的bmp文件,它将返回false。 不幸的是,这将把整个文件加载到内存中,你只需要测试头文件。您可以手动测试标头,或者找到一些可以为您执行此操作的API。

希望它有所帮助。

编辑: 也检查此链接: http://www.gamedev.net/reference/articles/article1966.asp