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

首頁 > 編程 > C++ > 正文

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

2020-05-23 14:23:56
字體:
供稿:網(wǎng)友
C語言讀取BMP圖像數(shù)據(jù)的源碼,需要的朋友可以參考一下
 
 

 

復制代碼代碼如下:

/* 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語言讀取源碼
*/

 

#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ā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
欧美—级高清免费播放| 九色在线网站| 天天影视综合| 大桥未久一区二区三区| 国产免费人做人爱午夜视频| 亚洲国产午夜伦理片大全在线观看网站| 日韩av在线一区| 国产毛片一区二区三区va在线| 在线观看理论片| 天然素人一区二区视频| 中文字幕国产专区| 粉嫩高清一区二区三区精品视频| 中文字幕一区二区三区乱码图片| 国产精品久久久久久久天堂第1集| 成年在线电影| 2019中文字幕在线电影免费| 免费永久网站黄欧美| 亚洲欧洲在线免费| 成人精品一区二区三区| 最近2019年好看中文字幕视频| 妞干网视频在线观看| 国产巨乳在线观看| 国模视频一区| 久久99久久99精品蜜柚传媒| 国语对白在线播放| 日产精品久久久一区二区| 伊人222成人综合网| 风流老熟女一区二区三区| 久久久久久久久久久久av| 秋霞午夜在线观看| 日韩欧美精品一区二区| 美女www一区二区| 一区二区三区四区高清精品免费观看| 999国产精品| 中文资源在线播放| 久久影视一区| 亚洲三级在线| 国产成人高清激情视频在线观看| 91美女片黄在线观| 日韩av高清在线看片| 中文字幕视频网站| 午夜欧美一区二区三区在线播放| 亚洲综合欧美在线| 亚洲免费电影在线| 亚洲图片小说网| 超碰在线公开97| 国产一区二区三区国产| 精品一区二区免费视频| 婷婷成人综合网| 在线播放豆国产99亚洲| 91免费高清视频| 桃乃木香奈和黑人aⅴ在线播放| 免费福利片在线观看| 日韩国产小视频| 成人影院久久久久久影院| 国产亚洲精品一区二区在线观看| 国内精品第一页| 亚洲日韩中文字幕在线播放| 黄色免费福利视频| 亚洲国产另类久久精品| 国产偷人妻精品一区| xxx性欧美在线| 欧美交a欧美精品喷水| 极品尤物av久久免费看| 97欧美成人| 91九色综合久久| 国产1区2区3区精品美女| 天天综合在线观看| 性欧美办公室18xxxxhd| 久久99久久98精品免观看软件| 亚洲一卡二卡三卡四卡五卡| 美女视频久久| 浓精h攵女乱爱av| 亚洲欧洲高清| 亚洲国产aⅴ精品一区二区| 青春草免费视频| 日本高清视频一区二区| 精品久久美女| 欧美亚洲色图校园春色| 人妻精品一区一区三区蜜桃91| 青青草手机在线观看| 日韩不卡在线视频| 激情丁香在线| 国产精品国产一区二区三区四区| av中文字幕一区| 国产精品自拍av| 亚洲国产古装精品网站| 欧美日本在线一区| 欧美好骚综合网| 日韩av无码一区二区三区不卡| 欧美极品jizzhd欧美| 51vv免费精品视频一区二区| 97人人干人人| 亚洲国产aⅴ精品一区二区| 日本大片在线播放| 国产精品久久久久久亚洲调教| 激情内射人妻1区2区3区| 女生裸体视频一区二区三区| 1024精品久久久久久久久| 欧美18一12sex性处hd| 亚洲美女av网站| 国产主播一区二区三区四区| 欧美精品精品一区| 日韩女同一区二区三区| 久久久中精品2020中文| 成人国产精品久久久网站| 91精品韩国| 少妇免费毛片久久久久久久久| 亚洲精品成人区在线观看| 成人免费网站视频www| 亚洲男人天堂网址| 国产在线不卡av| 黄色污网站在线观看| 国产黄页在线观看| 成人免费在线小视频| 亚洲另类视频| 欧美精品无码一区二区三区| 日韩av无码一区二区三区不卡| 成人激情诱惑| 免费成人美女在线观看.| 欧美成人免费在线| 久久av高潮av| 亚洲美女喷白浆| 在线观看导航| 欧美专区国产专区| 亚洲综合视频在线播放| 高清在线一区| 国产精品视频第一页| 亚洲女人天堂视频| 91国产高清在线| 人妻 日韩精品 中文字幕| 婷婷五月在线视频| 亚洲国产精品无码观看久久| 青青草97国产精品麻豆| 亚洲视频在线观看免费视频| 91丨九色porny丨蝌蚪| 最新av中文字幕| 男人本色网站| 福利网址在线| av资源亚洲| 亚洲一二三四在线观看| 久久一区91| 伊人av免费在线观看| 精品国产一区二区精华| 男女啪啪无遮挡| 一区二区精品视频在线观看| 久久久久亚洲精品国产| 中文字幕一区二区三区中文字幕| 久草福利资源在线| 小草av在线播放| 肉大捧一出免费观看网站在线播放| 亚洲精品电影网站| 精品黑人一区二区三区久久| 佐佐木明希av| 免费黄色小视频| 少妇的滋味中文字幕bd| 免费精品一区| 中文字幕免费不卡| 欧美无砖专区免费| av手机免费看| 青青草免费观看完整版高清| 欧美亚洲视频在线看网址| 亚洲东热激情| 午夜写真片福利电影网| 欧美日韩精品久久久免费观看| 国产亚洲综合色| 欧美一级一片| 日本成人超碰在线观看| 成人免费网站在线| 日韩精品久久一区二区| 亚洲电影在线一区二区三区| 国产精品自产自拍| 日韩精品极品视频| 国产精品美女久久久久久免费| 精品伊人久久久久7777人| eeuss中文| 国产九色在线播放九色| 日韩精品免费在线播放| 欧美69xxx| 中日韩av在线播放| 2022成人影院| 免费毛片在线播放| 欧美激情一区二区三区免费观看| 久久精品盗摄| 97人妻人人揉人人躁人人| 小说区图片区图片区另类灬| 色噜噜狠狠色综合网图区| 国产精品111| 国产日产精品一区二区三区| 中文字幕有码视频| 四虎国产精品永久免费观看视频| 国产精品播放| 亚欧在线免费观看| 手机看片久久久| 亚洲中文字幕在线观看| 国产黄色免费网| 亚洲欧美久久精品| 色999久久久精品人人澡69| av片在线看| 亚洲国产日韩一区二区| 国产日韩精品视频一区二区三区| 五月婷婷丁香花| 亚洲激情影院| 国产午夜小视频| 日韩精品水蜜桃| 国产欧美短视频| 日本一区免费在线观看| 69堂亚洲精品首页| 日本天堂在线观看| 在线播放/欧美激情| 亚洲影视九九影院在线观看| 国产九色在线| 欧美精品一区二区高清在线观看| 伦理天堂电影| 91在线porny国产在线看| 97久久超碰国产精品电影| 国产午夜视频在线观看| 亚洲久久成人| 国产在线不卡一卡二卡三卡四卡| 精品网站aaa| 国产清纯美女被跳蛋高潮一区二区久久w| 99re66热这里只有精品3直播| 国产免费一区二区三区香蕉精| 国产在线视频第一页| 国产又色又爽又黄的| 黄色网zhan| 亚洲a区在线视频| 国产精品第九页| 国产在视频线精品视频| www在线视频观看| 亚洲第一色网站| 亚洲国产精品一区二区三区| 精品97人妻无码中文永久在线| 中文字幕日韩av电影| 久久人人九九| 亚洲精品一级| 国产精品综合网| 免费av在线一区二区| 久久精品三级视频| 一本在线免费视频| 丁香视频免费观看| 六月丁香久久丫| 成人黄色免费在线观看| 337p日本| 日本a在线免费观看| 精品电影一区| 丁香啪啪综合成人亚洲小说| 亚洲欧美精品中文字幕在线| 国产精品a久久久久| 免费久久99精品国产| 日韩亚洲一区中文字幕| 国产精选一区二区三区不卡催乳| 四虎4hu永久免费入口| 免费电影网站在线观看| 午夜精品999| 国产乡下妇女做爰| 国产精品冒白浆免费视频| 动漫性做爰视频| 精品国产乱子伦一区| 欧美午夜理伦三级在线观看| 激情影院在线观看| 欧美理论电影| 极品裸体白嫩激情啪啪国产精品| 精品国内自产拍在线视频| 亚洲精品国产片| 久久久久久无码午夜精品直播| 成人在线观看毛片| 一本久道久久综合| 肉体视频在线| 91国偷自产一区二区三区的观看方式| 日韩精品在线视频观看| 婷婷国产v国产偷v亚洲高清| 亚洲激情在线视频| 成人a区在线观看| 大胆国模一区二区三区| 91av一区| 欧美一级日韩不卡播放免费| 一区二区三区在线高清| 国产精品久久久久久久久久久久久久久久久| 91小视频网站| 日本乱码高清不卡字幕| 欧美一二三四在线| 26uuu国产日韩综合| 免费看成人人体视频| 91av在线免费| 五月天av在线播放| 欧美一级片在线观看| 无码粉嫩虎白一线天在线观看| 九色视频在线观看| 美女性感视频久久久| 一区二区三区国产好| 久久99精品久久久久久动态图| 色婷婷av一区二区三区在线观看| 欧美在线观看视频一区二区三区| 四季久久免费一区二区三区四区| 视频一区视频二区中文| 日韩理论在线观看| 日韩午夜电影免费看| 一个人看的www视频在线免费观看| 国产社区精品视频| 青青成人在线| 中文在线免费| 免费看的av| 国产对白国语对白| 欧美风狂大伦交xxxx| 亚洲日本一区二区三区在线观看| 精品视频国产| 91小视频在线免费看| 国产区美女在线| 少妇精品放荡导航| 久久久久久久久久久91| 尤物在线观看| 国产又粗又大又爽的视频| 欧美一级高清免费播放| 国产免费一区二区三区在线观看| 欧美亚洲高清| 91视频最新地址| 精品国模在线视频| 国产日韩亚洲欧美综合| 天堂va在线高清一区| 久章草在线视频| 一区二区亚洲欧洲国产日韩| 不卡中文字幕av| 激情网址大全| 日本欧美中文字幕| 日韩欧美成人免费视频| 成人激情av在线| 国产一二三四区在线观看|