关于图像格式判断的问题

chinayang9 2007-05-31 12:40:30
有一段代码:

fread(&byte1,sizeof(BYTE),1,infile);
fread(&byte2,sizeof(BYTE),1,infile);
fread(&byte3,sizeof(BYTE),1,infile);
fread(&byte4,sizeof(BYTE),1,infile);
printf("%d,%d,%d,%d\n",byte1,byte2,byte3,byte4);
temp.type= byte1*16777216+byte2*65536+byte3*256+byte4;

应该是用temp.type来判断图像文件格式的.我看书上说图像文件的前2BYTE标识了图像格式,如424D="BM".但看这段代码好像是读了4BYTE~不解其用意,是不是错啦?

后续的判断代码如下:

switch (temp.type)
{
case 0xF10F:
case 0xF200:
case 0xF201:
case 0xF204:
case 0x0000:
{
... ...
break;
}
case 0x8000:
case 0x8001:
case 0xB003:
default :
{
printf("****** Unknow image type *****\n");
exit(1);
}
}

我试着输入了几次BMP图,都是直接执行到default里了
求教,这样的情况,是应该输入什么格式的图像文件呢?
...全文
235 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhijianqishen 2007-05-31
  • 打赏
  • 举报
回复
閫氬父閮芥槸閫氳繃鍚庣紑鍚嶆潵鍒ゆ柇鍥惧舰绫诲瀷鍚
shepherds 2007-05-31
  • 打赏
  • 举报
回复
每种图象文件的格式都是不一样的,包括内部定义是什么类型的图象文件的信息存储位置都是不一样的,也正是因此,每个人都可以定义自己的文件格式和文件类型,只要按照定义的格式读取文件就OK了。
buggycode 2007-05-31
  • 打赏
  • 举报
回复
不认为这样的方法可取。文件的格式定义没有说必须要把判断放在前2位或4位。只能说先判断标示符在2位或4位的文件,在判断其他的文件格式。而且用32位来判断完全就是错的。放弃这段东西或改了它
  • 打赏
  • 举报
回复
LZ强啊,我都是读取文件的时候,用后缀名字来判断文件类型的,最笨的办法,嘿嘿!

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧