首页 > 技术文章 > [C]判断一个文件是否是jpg格式

kirai 2016-08-17 22:49 原文

  同学要帮忙写的,用opencv的imread打开文件看抛出的异常来判断这种抖机灵的姿势就不写了…

  首先知道jpg文件是以0xFFD8开始,以0xFFD9结尾的。所以直接拿来fseek fread,异或一下或起来看看是不是0就行了。特别注意大小端的问题,所以我多提取了2个字节。

 

 1 bool IsAImageFile(const char* fileName) {
 2     FILE* fp;
 3     __int8_t head, tail;
 4     fp = fopen(fileName, "rb");
 5     fseek(fp, 1L, SEEK_CUR);
 6     fread(&head, 2, 1, fp);
 7     fseek(fp,-1L,SEEK_END);
 8     fread(&tail, 2, 1, fp);
 9     return (((head & 0x0000ffff) ^ 0x0000ffd8) | (tail & 0x0000ffff) ^ 0x0000ffd9) == 0;
10 }

 

推荐阅读