给定没有扩展名的图像文件,如何读取图像文件并在C++中识别文件格式?
您可以检查Linux file
命令(git://git.debian.net/git/debian/file.git
)的来源.它完全一样; 而不仅仅是图像文件.
通过读取前几个字节,您可以得到一个猜测,但需要尝试完全解析以确保.以下是我的一个图像加载对象中的一些代码,您可以将其用作参考:
if(Open()==true) { unsigned char testread[5]; if(Read(&testread,(unsigned long)4)==4) { testread[4]=0; if(!strcmp((char *)testread,"GIF8")) { Close(); LoadGIFImage(justsize); } else if(testread[0]==0xff && testread[1]==0xd8) { Close(); LoadJPGImage(justsize); } else if(testread[0]==0x89 && testread[1]==0x50 && testread[2]==0x4e && testread[3]==0x47) { Close(); LoadPNGImage(justsize); } else if(testread[0]==0x00 && testread[1]==0x00 && testread[2]==0x01 && testread[3]==0x00) { Close(); LoadWINICOImage(justsize); } else if(testread[0]==0x42 && testread[1]==0x4d) { Close(); LoadBMPImage(justsize);