识别图像文件格式

1 c++ image

给定没有扩展名的图像文件,如何读取图像文件并在C++中识别文件格式?

Meh*_*ari 6

您可以检查Linux file命令(git://git.debian.net/git/debian/file.git)的来源.它完全一样; 而不仅仅是图像文件.


KPe*_*xEA 5

通过读取前几个字节,您可以得到一个猜测,但需要尝试完全解析以确保.以下是我的一个图像加载对象中的一些代码,您可以将其用作参考:

    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);
Run Code Online (Sandbox Code Playgroud)