zoukankan      html  css  js  c++  java
  • c语言_常见图片格式判断

    c语言_常见图片格式判断

    我想尽各种思路。今天,终于把图片判断搞定了。

    在此,我写一下我的思路。希望对那些不想看代码的朋友们有帮助。

    常风的的图片格式有:bmp,png,jpg,gif等图片格式。

    我用的方法是读取图片头文件中的标识符:

    1 unsigned short  BMP=0x4D42,
    2                 JPG=0xD8FF,
    3                 PNG[4]={0x5089,0x474E,0x0A0D,0x0A1A},
    4                 GIF[3]={0x4947,0x3846,0x6139};

    你会发现,会一次读取n个字节的顺序不同;与用"okhit"打开的顺序不同。

    这你都不用在意。

    有了这个判断依据,下一步就是判断了。这个用中文说不清,请看原代码。

    用的是if else结构.

    可能,你在编译的时候,发现会打不开文件。请注意:打开的文件名

    int main()
    {
    
        FILE *fis;
        short int i=0;
        unsigned short pis[5];
        if((fis=fopen("1.bmp","r"))==NULL) 
            printf("can not read %s
    ","1.bmp");
        
        fread(pis,8,1,fis);
        for(i=0;i<4;++i)
            printf("%0x..",pis[i]);
        printf("
    ");
    
            if(pis[0]==BMP)    
              printf("it is a bmp
    ");
              else if(pis[0]==JPG)    
                printf("it is a jpg
    ");
                else if(PNG[0]==pis[0]&&PNG[1]==pis[1]&&PNG[2]==pis[2]&&PNG[3]==pis[3])    
                  printf("it is a png
    ");
                  else if(GIF[0]==pis[0]&&GIF[1]==pis[1]&&GIF[2]==pis[2])    
                printf("it is a gif
    ");
    
        return 0;
    }

     为了方便调用,特意做成了函数:

    int istupian(char entry[])
    /*返加值为
    1 bmp;
    2 jpg;
    3 png;
    4 gif;
    */
    {
        FILE *fis;
        short int i=0;
        unsigned short pis[5];
        int flag=0;//每次调用都进行初始化
        if((fis=fopen(entry,"r"))==NULL) 
            printf("can not read %s
    ",entry);
        fread(pis,8,1,fis);
        
        if(pis[0]==BMP)    
        {
            flag=1;        
            printf("it is a bmp
    ");
        }
        else if(pis[0]==JPG)    
        {
            flag=2;
            printf("it is a jpg
    ");
        }
        else if(PNG[0]==pis[0]&&PNG[1]==pis[1]&&PNG[2]==pis[2]&&PNG[3]==pis[3])    
        {
            flag=3;        
            printf("it is a png
    ");
        }
        else if(GIF[0]==pis[0]&&GIF[1]==pis[1]&&GIF[2]==pis[2])    
        {
            flag=4;        
            printf("it is a gif
    ");
        }
        return flag;
    
    
    }
  • 相关阅读:
    EL表达式
    使用Cookie保存用户信息
    GUI学习之二——PyQt控件初识
    GUI学习之一——PyQt5初识
    HTML学习总结
    centos7 mysql的安装与配置
    Python之RabbitMQ的使用
    python之模块的导入
    Python之ftp服务器
    GUI学习之〇——PyQt5安装
  • 原文地址:https://www.cnblogs.com/orangebook/p/3333084.html
Copyright © 2011-2022 走看看