欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c語(yǔ)言常見(jiàn)圖片格式判斷實(shí)例

 更新時(shí)間:2013年09月22日 16:11:16   投稿:shangke  
這篇文章介紹了c語(yǔ)言常見(jiàn)圖片格式判斷實(shí)例,有需要的朋友可以參考一下

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

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

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

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

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

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

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

這你都不用在意。

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

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

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

復(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;


}

相關(guān)文章

  • C++ 實(shí)現(xiàn)稀疏矩陣的壓縮存儲(chǔ)的實(shí)例

    C++ 實(shí)現(xiàn)稀疏矩陣的壓縮存儲(chǔ)的實(shí)例

    這篇文章主要介紹了C++ 實(shí)現(xiàn)稀疏矩陣的壓縮存儲(chǔ)的實(shí)例的相關(guān)資料,M*N的矩陣,矩陣中有效值的個(gè)數(shù)遠(yuǎn)小于無(wú)效值的個(gè)數(shù),且這些數(shù)據(jù)的分布沒(méi)有規(guī)律,需要的朋友可以參考下
    2017-07-07
  • C++中實(shí)現(xiàn)隊(duì)列類鏈?zhǔn)酱鎯?chǔ)與棧類鏈?zhǔn)酱鎯?chǔ)的代碼示例

    C++中實(shí)現(xiàn)隊(duì)列類鏈?zhǔn)酱鎯?chǔ)與棧類鏈?zhǔn)酱鎯?chǔ)的代碼示例

    這篇文章主要介紹了C++中實(shí)現(xiàn)隊(duì)列類鏈?zhǔn)酱鎯?chǔ)與棧類鏈?zhǔn)酱鎯?chǔ)的代碼示例,通過(guò)注釋來(lái)說(shuō)明,直接上代碼,簡(jiǎn)單粗暴XD 需要的朋友可以參考下
    2016-03-03
  • C語(yǔ)言可變參數(shù)列表的用法與深度剖析

    C語(yǔ)言可變參數(shù)列表的用法與深度剖析

    這篇文章主要給大家介紹了關(guān)于C語(yǔ)言可變參數(shù)列表的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-02-02
  • C++?STL?中的數(shù)值算法示例講解

    C++?STL?中的數(shù)值算法示例講解

    本片文章講解了C++STL?中的數(shù)值算法,包含iota、accumulate、adjacent_difference、inner_product、partial_sum這些方法的使用,感興趣的朋友來(lái)看看吧<BR>
    2022-04-04
  • C++設(shè)計(jì)模式之裝飾模式

    C++設(shè)計(jì)模式之裝飾模式

    這篇文章主要介紹了C++設(shè)計(jì)模式之裝飾模式,裝飾模式能夠?qū)崿F(xiàn)動(dòng)態(tài)的為對(duì)象添加功能,是從一個(gè)對(duì)象外部來(lái)給對(duì)象添加功能,需要的朋友可以參考下
    2014-10-10
  • 詳解C++中的雙冒號(hào) ::

    詳解C++中的雙冒號(hào) ::

    這篇文章主要介紹了C++中的雙冒號(hào) ::,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-09-09
  • C語(yǔ)言中數(shù)據(jù)結(jié)構(gòu)之鏈表歸并排序?qū)嵗a

    C語(yǔ)言中數(shù)據(jù)結(jié)構(gòu)之鏈表歸并排序?qū)嵗a

    這篇文章主要介紹了C語(yǔ)言中數(shù)據(jù)結(jié)構(gòu)之鏈表歸并排序?qū)嵗a的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • 利用c語(yǔ)言實(shí)現(xiàn)卷積碼編碼器示例

    利用c語(yǔ)言實(shí)現(xiàn)卷積碼編碼器示例

    這篇文章主要介紹了利用c語(yǔ)言實(shí)現(xiàn)卷積碼編碼器示例,需要的朋友可以參考下
    2014-03-03
  • 淺談C++的幾種從鍵盤(pán)輸入方式

    淺談C++的幾種從鍵盤(pán)輸入方式

    今天小編就為大家分享一篇淺談C++的幾種從鍵盤(pán)輸入方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • VC多線程編程詳解

    VC多線程編程詳解

    這篇文章主要介紹了VC多線程編程,實(shí)例形式詳細(xì)分析了多線程編程的原理與實(shí)現(xiàn)方法,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-10-10

最新評(píng)論