注册 登录
编程论坛 C++教室

怎么用C++判断一个文件是否为bmp文件?

HBHGIMU 发布于 2012-08-31 00:18, 2189 次点击
RT。。
11 回复
#2
TonyDeng2012-08-31 00:19
文件头两个字节是字符BM
#3
境燕明2012-08-31 08:29
这不是人去做的吧!?
#4
pangding2012-08-31 23:21
2楼 的方法就可行。
#5
hougui2012-09-01 08:59
2楼 的方法就可行.呵呵
#6
TonyDeng2012-09-01 10:31
当然啦,只认BM开头,这是BMP文件的必要条件,但并非充分条件。也就是说,实际上并非以BM开头的文件都必然是BMP图像,它必须存在BMP图像格式的所有元素,才是完整的。你随便拿个文本文件,在最开头写上BM,然后文件改名为.BMP后缀,到资源管理器看看,那是不是被认作图像文件了?但是打开是错误的。做过这个实验,你应该醒悟点什么了。
#7
有容就大2012-09-01 10:52
楼主你醒悟了没啊
#8
TonyDeng2012-09-01 12:42
以下是引用有容就大在2012-9-1 10:52:58的发言:

楼主你醒悟了没啊

你明白了么?
#9
zklhp2012-09-01 12:47
要想100%的判断不大容易 比较好的一个方法就是看这个bmp文件的文件头等东西是否合理 如果合理 比如 文件大小和文件头里面写的是一样的 一般就认为是bmp 也就是认为这个文件是【合法】的bmp

但为啥100%的判断不容易呢 也有一种可能 我把一个文本文件按照bmp文件的格式存起来 文件头等东西都是对的 这样 图片甚至能打开 只不过基本是乱的 这样的 要判断是不是就不容易了

我认为 判断一个bmp文件是否【合法】容易 判断是不是图片文件 难
#10
TonyDeng2012-09-01 12:53
在BMP文件中埋藏病毒代码(好像是更广泛的图片格式都可以),在以前曾经发生过,后来据说修复了。如果是自己解析图像文件呈现,最好严格按照文件头格式指示提取数据和解析,不要读入多余的数据,埋藏病毒的文件尺寸比正常的稍大一点,对BMP这种大容量的文件来说,多几百字节,一般不察觉的。
#11
zklhp2012-09-01 13:00
以下是引用TonyDeng在2012-9-1 12:53:33的发言:

在BMP文件中埋藏病毒代码(好像是更广泛的图片格式都可以),在以前曾经发生过,后来据说修复了。如果是自己解析图像文件呈现,最好严格按照文件头格式指示提取数据和解析,不要读入多余的数据,埋藏病毒的文件尺寸比正常的稍大一点,对BMP这种大容量的文件来说,多几百字节,一般不察觉的。

微软的.NET都上G了 病毒哪还有几百字节的啊 好早以前就上M了 现在估计快100M了罢

都跟微软学 真不好
#12
TonyDeng2012-09-01 13:01
病毒没有那么大的,木马就有。
1