亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 編程 > C > 正文

C語(yǔ)言讀取BMP圖像數(shù)據(jù)的源碼

2020-01-26 16:20:50
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

/* File name:   bmpTest.c
   Author:      WanChuan XianSheng
   Date:        Oct 01, 2011
   Description: Show all Info a bmp file has. including
   FileHeader Info, InfoHeader Info and Data Part.

   Reference: BMP圖像數(shù)據(jù)的C語(yǔ)言讀取源碼
*/

#include <stdio.h>
#include <stdlib.h>

#define BITMAPFILEHEADERLENGTH 14   // The bmp FileHeader length is 14
#define BM 19778                    // The ASCII code for BM

/* Test the file is bmp file or not */
void bmpFileTest(FILE* fpbmp);
/* To get the OffSet of header to data part */
void bmpHeaderPartLength(FILE* fpbmp);
/* To get the width and height of the bmp file */
void BmpWidthHeight(FILE* fpbmp);
/* Show bmp file tagBITMAPFILEHEADER info */
void bmpFileHeader(FILE* fpbmp);
/* Show bmp file tagBITMAPINFOHEADER info */
void bmpInfoHeader(FILE* fpbmp);
/* Show the Data Part of bmp file */
void bmpDataPart(FILE* fpbmp);

unsigned int OffSet = 0;    // OffSet from Header part to Data Part
long BmpWidth = 0;          // The Width of the Data Part
long BmpHeight = 0;         // The Height of the Data Part


int main(int argc, char* argv[])
{
     /* Open bmp file */
     FILE *fpbmp = fopen("lena.bmp", "r+");
     if (fpbmp == NULL)
     {
      fprintf(stderr, "Open lena.bmp failed!!!/n");
      return 1;
     }

     bmpFileTest(fpbmp);                //Test the file is bmp file or not
     bmpHeaderPartLength(fpbmp);        //Get the length of Header Part
     BmpWidthHeight(fpbmp);             //Get the width and width of the Data Part
     //bmpFileHeader(fpbmp);            //Show the FileHeader Information
     //bmpInfoHeader(fpbmp);            //Show the InfoHeader Information
     bmpDataPart(fpbmp);                //Reserve the data to file

     fclose(fpbmp);
     return 0;
}

/* Test the file is bmp file or not */
void bmpFileTest(FILE* fpbmp)
{    
     unsigned short bfType = 0;
     fseek(fpbmp, 0L, SEEK_SET);
     fread(&bfType, sizeof(char), 2, fpbmp);
     if (BM != bfType)
     {
      fprintf(stderr, "This file is not bmp file.!!!/n");
      exit(1);
     }
}

/* To get the OffSet of header to data part */
void bmpHeaderPartLength(FILE* fpbmp)
{
     fseek(fpbmp, 10L, SEEK_SET);
     fread(&OffSet, sizeof(char), 4, fpbmp);   
     //printf("The Header Part is of length %d./n", OffSet);
}

/* To get the width and height of the bmp file */
void BmpWidthHeight(FILE* fpbmp)
{
     fseek(fpbmp, 18L, SEEK_SET);
     fread(&BmpWidth, sizeof(char), 4, fpbmp);
     fread(&BmpHeight, sizeof(char), 4, fpbmp);
     //printf("The Width of the bmp file is %ld./n", BmpWidth);
     //printf("The Height of the bmp file is %ld./n", BmpHeight);
}

/* Show bmp file tagBITMAPFILEHEADER info */
void bmpFileHeader(FILE* fpbmp)
{
     unsigned short bfType;              //UNIT        bfType;
     unsigned int   bfSize;              //DWORD       bfSize;
     unsigned short bfReserved1;         //UINT        bfReserved1;
     unsigned short bfReserved2;         //UINT        bfReserved2;
     unsigned int   bfOffBits;           //DWORD       bfOffBits;

     fseek(fpbmp, 0L, SEEK_SET);

     fread(&bfType,      sizeof(char), 2, fpbmp);
     fread(&bfSize,      sizeof(char), 4, fpbmp);
     fread(&bfReserved1, sizeof(char), 2, fpbmp);
     fread(&bfReserved2, sizeof(char), 2, fpbmp);
     fread(&bfOffBits,   sizeof(char), 4, fpbmp);

     printf("************************************************/n");
     printf("*************tagBITMAPFILEHEADER info***********/n");
     printf("************************************************/n");
     printf("bfType              is %d./n", bfType);
     printf("bfSize              is %d./n", bfSize);
     printf("bfReserved1         is %d./n", bfReserved1);
     printf("bfReserved2         is %d./n", bfReserved2);
     printf("bfOffBits           is %d./n", bfOffBits);
}

/* Show bmp file tagBITMAPINFOHEADER info */
void bmpInfoHeader(FILE* fpbmp)
{
     unsigned int biSize;              // DWORD        biSize;
     long         biWidth;                // LONG         biWidth;
     long         biHeight;               // LONG         biHeight;
     unsigned int biPlanes;               // WORD         biPlanes;
     unsigned int biBitCount;             // WORD         biBitCount;
     unsigned int biCompression;          // DWORD        biCompression;
     unsigned int biSizeImage;            // DWORD        biSizeImage;
     long         biXPelsPerMerer;        // LONG         biXPelsPerMerer;
     long           biYPelsPerMerer;        // LONG         biYPelsPerMerer;
     unsigned int biClrUsed;              // DWORD        biClrUsed;
     unsigned int biClrImportant;         // DWORD        biClrImportant;

     fseek(fpbmp, 14L, SEEK_SET);

     fread(&biSize,          sizeof(char), 4, fpbmp);
     fread(&biWidth,         sizeof(char), 4, fpbmp);
     fread(&biHeight,        sizeof(char), 4, fpbmp);
     fread(&biPlanes,        sizeof(char), 4, fpbmp);
     fread(&biBitCount,      sizeof(char), 4, fpbmp);
     fread(&biCompression,   sizeof(char), 4, fpbmp);
     fread(&biSizeImage,     sizeof(char), 4, fpbmp);
     fread(&biXPelsPerMerer, sizeof(char), 4, fpbmp);
     fread(&biYPelsPerMerer, sizeof(char), 4, fpbmp);
     fread(&biClrUsed,       sizeof(char), 4, fpbmp);
     fread(&biClrImportant,  sizeof(char), 4, fpbmp);

     printf("************************************************/n");
     printf("*************tagBITMAPINFOHEADER info***********/n");
     printf("************************************************/n");
     printf("biSize              is %d. /n", biSize);
     printf("biWidth             is %ld./n", biWidth);
     printf("biHeight            is %ld./n", biHeight);
     printf("biPlanes            is %d. /n", biPlanes);
     printf("biBitCount          is %d. /n", biBitCount);
     printf("biCompression       is %d. /n", biCompression);
     printf("biSizeImage         is %d. /n", biSizeImage);
     printf("biXPelsPerMerer     is %ld./n", biXPelsPerMerer);
     printf("biYPelsPerMerer     is %ld./n", biYPelsPerMerer);
     printf("biClrUsed           is %d. /n", biClrUsed);
     printf("biClrImportant      is %d. /n", biClrImportant);
}

/* Show the Data Part of bmp file */
void bmpDataPart(FILE* fpbmp)
{
     int i, j;
     unsigned char bmpPixel[BmpWidth][BmpHeight];
     unsigned char* bmpPixelTmp = NULL;
     FILE* fpDataBmp;

     /* New a file to save the data matrix */
     if((fpDataBmp=fopen("bmpData.dat","w+")) == NULL)
     {
      fprintf(stderr, "Failed to construct file bmpData.dat.!!!");
      exit(1);
     }

     fseek(fpbmp, OffSet, SEEK_SET);
     if ((bmpPixelTmp=(unsigned char*)malloc(sizeof(char)*BmpWidth*BmpHeight))==NULL)
     {
      fprintf(stderr, "Data allocation failed.!!!/n");
      exit(1);
     }
     fread(bmpPixelTmp, sizeof(char), BmpWidth*BmpHeight, fpbmp);

     /* Read the data to Matrix and save it in file bmpData.dat */
     for(i =0; i < BmpHeight; i++)
     {
      fprintf(fpDataBmp, "The data in line %-3d:/n", i+1);
      for(j = 0; j < BmpWidth; j++)
      {
           bmpPixel[i][j] = bmpPixelTmp[BmpWidth*(BmpHeight-1-i)+j];
           //fwrite(&chartmp, sizeof(char), 1, fpDataBmp);
           fprintf(fpDataBmp, "%-3d ", bmpPixel[i][j]);
           if ((j+1)%32 == 0)
           {
            fprintf(fpDataBmp, "/n");
           }
      }
     }
     /* Used to test the data read is true or false
    You can open the file using Matlab to compare the data */
     //printf("bmpPixel[2][3]   is %d./n", bmpPixel[2][3]);
     //printf("bmpPixel[20][30] is %d./n", bmpPixel[20][30]);

     free(bmpPixelTmp);
     fclose(fpDataBmp);
}

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

圖片精選

91精品视频观看| 色欲av无码一区二区人妻| 偷拍一区二区| 一区二区三区四区| 日韩影视精品| 综合久久综合久久| 青青操在线观看| 国产精品午夜春色av| 日本卡一卡2卡3卡4精品卡网站| 久久久久久久久91| 日韩av电影在线免费播放| 久久精品91久久久久久再现| 天堂网2014av| 亚洲全部视频| 最近中文字幕免费| 日韩精品免费播放| 国产一级片中文字幕| 久草在线中文888| 一级黄在线观看| 丝袜美腿成人在线| 女主播福利一区| 亚洲国产成人高清精品| 亚洲国产高清一区| 亚洲美女久久| 免费在线一级片| 91探花福利精品国产自产在线| 亚洲一区二区在线播放相泽| 国产精品视频网站在线观看| 性欧美videos精品| 日韩精品社区| 一级黄色a毛片| 女人色极品影院| 在线视频亚洲专区| 欧洲精品一区二区| 精品人体无码一区二区三区| 国产成人免费av在线| 欧美午夜宅男影院| 95精品视频在线| 欧美独立站高清久久| 欧美精品se| 国产麻豆精品一区二区三区v视界| 国产精品毛片久久| 欧美成人aaa片一区国产精品| 亚洲精品a区| 国产精品久久久久久久久久尿| 在线免费观看一区二区三区| 亚州综合一区| 日本黄网站免费| 日本久久综合| 国产精品狼人久久影院观看方式| 91免费精品国自产拍在线不卡| 日韩久久久久久久久久久久| 黄网站在线观看高清免费| 国产精品aaaa| 拍拍拍在线观看视频免费| 免费三片60分钟| 久久精品女同亚洲女同13| 欧美精品影院| 最新日本中文字幕| caoporen人人| 成人性生交免费看| 国产精品久久久久久成人| 最新中文字幕久久| 国产综合香蕉五月婷在线| 成人手机在线免费视频| 亚洲无线码在线一区观看| 欧美极品少妇xxxxⅹ免费视频| 大片免费在线观看| 综合视频在线观看| 欧美一级爱爱| 日韩视频中文| 桥本有菜亚洲精品av在线| 精品国产一区二区三区不卡蜜臂| 乌克兰美女av| 亚洲综合激情六月婷婷在线观看| 亚洲一区日韩精品中文字幕| 毛片中文在线观看| 国产无套精品一区二区| 欧美日韩国产一区精品一区| 午夜激情视频网| 欧美成人一区二区| 男人添女荫道口图片| 88在线观看91蜜桃国自产| 欧美老熟妇喷水| 久久av一区二区| 久久久久久网址| 久久久久高清| 日韩精品一级毛片在线播放| 国产精品亲子伦av一区二区三区| 亚洲午夜精品网| 国产精品麻豆免费版现看视频| 亚洲精品午夜精品| 99久久精品免费看国产四区| 在线视频国内自拍亚洲视频| 国产精品任我爽爆在线播放| 杨幂一区二区国产精品| 亚洲 欧美 日韩 综合| 麻豆精品国产传媒av| 91视频久久久| 亚州av乱码久久精品蜜桃| 国产欧美日韩精品a在线观看| 国产精品久久久久蜜臀| 一级毛片在线| 色老汉一区二区三区| 亚洲综合精品四区| 三级av在线播放| 91在线网站视频| 成人满18在线观看网站免费| 99免费在线观看| **毛片在线网站| 国产免费一区二区三区在线观看| 99热国产免费| 国产乱人伦丫前精品视频| 欧美jiizzhd精品欧美| 99热在线国产| 九色蝌蚪性视频| 牛牛精品在线视频| 欧美国产精品| 日本中文字幕伦在线观看| 少妇精品视频一区二区| 欧美jizzhd69巨大| www.欧美| 久久久久久久av| 在线视频亚洲| 亚洲老妇xxxxxx| 91精品福利在线一区二区三区| 热re99久久精品国产99热| 精品久久影院| 粉嫩tv在线播放| 国产一区二区三区免费视频| 亚洲天堂第一页| 日韩欧美在线电影| 日韩中文字幕免费视频| 亚洲制服丝袜一区| 亚洲午夜精品久久久| 亚洲一区影音先锋| 午夜精品视频| 亚洲欧美日韩国产中文| 91夜夜未满十八勿入爽爽影院| 日韩一区二区不卡视频| 欧美在线观看不卡| 综合国产第二页| 国产精品第七影院| 免费av一级电影| 这里只有视频精品| 欧美国产亚洲视频| 欧美国产综合视频| 中文在线а√在线8| 不卡日本视频| 欧美最猛黑人xxxx黑人猛交3p| av福利在线| 久久久久久人妻一区二区三区| 网友自拍亚洲| 爱爱永久免费视频| 精品视频久久久| 国产视频二区三区| 国产精品豆花视频| 国产精欧美一区二区三区白种人| 日韩亚洲精品在线观看| 亚洲国产精品综合久久久| 国产精品入口芒果| 午夜私人影院在线观看| 日本久久精品| 欧美人与性囗牲恔配| 99riav国产| 日韩大片免费在线观看| jizz亚洲女人高潮大叫| 久久精品人人做人人爽| 欧美性xxxxx极品视频| 99热精品在线| 色综合99久久久无码国产精品| 亚洲精品国产精品久久清纯直播| 69夜色精品国产69乱| 污污视频网站| 特大巨黑人吊性xxx视频| 欧美精品色综合| caoporn成人免费视频在线| 亚洲一区二区三区精品在线观看| 亚洲影院理伦片| 极品日韩久久| 亚洲免费久久| 国产91av视频在线观看| 亚洲风情在线资源| 欧美性猛交xxxxbbbb| 伊人久久大香线蕉av不卡| 国产精品人成在线观看免费| 麻豆视频免费看| 国产婷婷一区二区三区久久| 少妇又紧又色又爽又刺激视频| 永久免费精品视频网站| 2020国产精品久久精品不卡| 国产玖玖精品视频| 国产精品500部| 欧美黄色一级视频| 欧美激情国产精品日韩| 久久久久久97三级| 日本视频免费| 韩日在线视频| 在线观看制服搞黄视频| 91女神在线观看| 特级西西444www大精品视频免费看| 成人噜噜噜噜| 欧美激情中文字幕乱码免费| 色资源网站在线观看| 男人的天堂va在线| 99视频精品全部免费看| 天堂中文资源在线观看| 日韩va亚洲va欧美va久久| 欧美成人午夜激情| 黄色录像二级片| 久草在线中文888| 国产男女无遮挡猛进猛出| 色一情一乱一伦一区二区三区丨| 中文字幕一区二区三区乱码| 精品剧情v国产在线观看| 亚洲精品极品| 懂色av粉嫩av蜜臀av一区二区三区| 国外色69视频在线观看| 日韩av不卡一区二区| 亚洲女人天堂av| 成人在线观看网站| 91久久精品日日躁夜夜躁欧美| 国产精品久久久久久久久久久久久久久久| 波多野结衣一区二区三区| 香蕉视频久久久| 六月婷婷久久| 7777精品伊人久久久大香线蕉最新版| 日韩精品一区二区三区中文在线| 精品中文一区| www.999av| 最新黄色av网址| 在线国产情侣| 天堂а√在线最新版中文在线| 夜夜狂射影院| 久久久久综合一区二区三区| 露出调教综合另类| 天天天综合网| 综合视频一区| 日韩欧美视频| 久久狠狠久久综合桃花| 成人黄色av网站| 极品粉嫩小仙女高潮喷水久久| 欧美激情一级二级| 先锋av资源色| 手机在线电影一区| 国产精品久久久久久久久久东京| 国产成人生活片| 欧美伦理视频在线观看| 色午夜这里只有精品| 久青草视频在线播放| 欧美午夜寂寞影院| 亚洲视频观看| 污网站在线免费看| 亚洲精品18p| 伊人22222| 日韩在线观看中文字幕| 精品av导航| 黄色视屏免费在线观看| 伪装者免费全集在线观看| 欧美做暖暖视频| 欧美在线一区二区视频| 国产三级欧美三级日产三级99| 91一区二区| 精品三级av在线导航| 日韩肉感妇bbwbbwbbw| 久久精品免费网站| 电影一区电影二区| 成年女人免费又黄又爽视频| 99久久久久久| 国产一本一道久久香蕉| 国产农村妇女精品一区| 性感美女极品91精品| 国产丝袜精品视频| 国产传媒一区二区三区| 久久中国妇女中文字幕| 亚洲国产欧美一区二区三区不卡| 免费做暖暖免费观看日本| 日本中文一区二区三区| 国产视频网站一区二区三区| 黄视频在线免费看| 午夜欧美大片免费观看| 先锋影音日韩| 黄色片网站免费| 青青在线观看视频中文字| 欧美视频二区欧美影视| 伊人影院蕉久552| 国产成人短视频在线观看| 国产精品精品视频| 免费成人蒂法网站| 欧美国产日本高清在线| 日本激情视频网| 在线观看日韩国产| 国产精品久久中文| 国产中文字幕久久| 俄罗斯性欧美| 91久久久精品| 四虎在线免费观看| 日韩国产一二三区| 在线精品视频一区| 成人av影院在线观看| 欧美猛男同性videos| 岛国精品一区二区三区| 亚洲精品电影网| 日韩欧美中文在线| 91超碰中文字幕久久精品| 四虎影院成人在线观看| 国产专区一区二区| 亚洲日本无吗高清不卡| 粗大的内捧猛烈进出在线视频| 丰满湿润大白屁股bbw按摩| 在线观看免费视频高清游戏推荐| 爽死777影院| 亚洲成人一区二区三区| www.在线欧美| 樱花草国产18久久久久| 爽爽爽爽爽爽爽成人免费观看| 日韩免费观看av| 色播视频在线观看| 国产精品巨作av| 一级一级黄色片| 亚洲美女少妇无套啪啪呻吟| 在线成人www免费观看视频| 欧美男男freegayvideosroom| 久久精品国产清自在天天线| 亚洲人亚洲人成电影网站色| 性色av无码久久一区二区三区| 精品一区二区三区免费爱| 精品国产乱码久久久久久郑州公司|