国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

c語言常見圖片格式判斷實(shí)例

2020-01-26 15:50:30
字體:
供稿:網(wǎng)友

我想盡各種思路。今天,終于把圖片判斷搞定了。

在此,我寫一下我的思路。希望對那些不想看代碼的朋友們有幫助。

常風(fēng)的的圖片格式有:bmp,png,jpg,gif等圖片格式。

我用的方法是讀取圖片頭文件中的標(biāo)識符:

復(fù)制代碼 代碼如下:

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

你會發(fā)現(xiàn),會一次讀取n個字節(jié)的順序不同;與用"okhit"打開的順序不同。

這你都不用在意。

有了這個判斷依據(jù),下一步就是判斷了。這個用中文說不清,請看原代碼。

用的是if else結(jié)構(gòu).

可能,你在編譯的時(shí)候,發(fā)現(xiàn)會打不開文件。請注意:打開的文件名

復(fù)制代碼 代碼如下:

int main()
{

    FILE *fis;
    short int i=0;
    unsigned short pis[5];
    if((fis=fopen("1.bmp","r"))==NULL)
        printf("can not read %s/n","1.bmp");

    fread(pis,8,1,fis);
    for(i=0;i<4;++i)
        printf("%0x..",pis[i]);
    printf("/n");

        if(pis[0]==BMP)   
          printf("it is a bmp/n");
          else if(pis[0]==JPG)   
            printf("it is a jpg/n");
            else if(PNG[0]==pis[0]&&PNG[1]==pis[1]&&PNG[2]==pis[2]&&PNG[3]==pis[3])   
              printf("it is a png/n");
              else if(GIF[0]==pis[0]&&GIF[1]==pis[1]&&GIF[2]==pis[2])   
            printf("it is a gif/n");

    return 0;
}

為了方便調(diào)用,特意做成了函數(shù):

復(fù)制代碼 代碼如下:

int istupian(char entry[])
/*返加值為
bmp;
jpg;
png;
gif;
*/
{
    FILE *fis;
    short int i=0;
    unsigned short pis[5];
    int flag=0;//每次調(diào)用都進(jìn)行初始化
    if((fis=fopen(entry,"r"))==NULL)
        printf("can not read %s/n",entry);
    fread(pis,8,1,fis);

    if(pis[0]==BMP)   
    {
        flag=1;       
        printf("it is a bmp/n");
    }
    else if(pis[0]==JPG)   
    {
        flag=2;
        printf("it is a jpg/n");
    }
    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/n");
    }
    else if(GIF[0]==pis[0]&&GIF[1]==pis[1]&&GIF[2]==pis[2])   
    {
        flag=4;       
        printf("it is a gif/n");
    }
    return flag;


}

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 淄博市| 开封市| 山东| 积石山| 商丘市| 同德县| 小金县| 运城市| 金川县| 阿拉尔市| 新巴尔虎左旗| 邵阳县| 汉阴县| 岢岚县| 丹东市| 阜新| 清镇市| 石狮市| 河间市| 华宁县| 阿拉善盟| 抚州市| 连南| 衢州市| 垫江县| 融水| 高平市| 洪雅县| 宣武区| 汾西县| 尉犁县| 高陵县| 西吉县| 贺州市| 普陀区| 凤冈县| 大竹县| 囊谦县| 昌宁县| 凤冈县| 遂溪县|