亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

c語言常見圖片格式判斷實例

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

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

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

常風(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).

可能,你在編譯的時候,發(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;


}

相關(guān)文章

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

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

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

    C++中實現(xiàn)隊列類鏈?zhǔn)酱鎯εc棧類鏈?zhǔn)酱鎯Φ拇a示例

    這篇文章主要介紹了C++中實現(xiàn)隊列類鏈?zhǔn)酱鎯εc棧類鏈?zhǔn)酱鎯Φ拇a示例,通過注釋來說明,直接上代碼,簡單粗暴XD 需要的朋友可以參考下
    2016-03-03
  • C語言可變參數(shù)列表的用法與深度剖析

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

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

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

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

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

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

    詳解C++中的雙冒號 ::

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

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

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

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

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

    淺談C++的幾種從鍵盤輸入方式

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

    VC多線程編程詳解

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

最新評論