同学要帮忙写的,用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 }
时间: 2024-12-20 12:48:56