讀取bmp檔案頭出錯

2021-06-17 20:21:17 字數 614 閱讀 1997

typedef struct tagbitmapfileheader bitmapfileheader;

bitmapfileheader bf;

bitmapinfoheader bi;

word bftype;

//fread(&bftype,1,2,f1);

//coutcout<

開始**如上,讀取的bf.bfsize為4,而且 bfreserved1,bfreserved2,bfoffbits讀取都是錯誤的,後來在網上查詢發現時記憶體對其問題造成的,因為結構體會按照dword長度也就是4進行對齊,所以在第乙個word後面要2個位元組,結構體真正佔據的長度其實是16,在讀取影象時候,檔案頭為424d16f604000000000036040000,bfsize本該從第3位元組開始讀取,而bfsize實際是從第5位元組開始讀取,所以後續資料均出現了錯誤,所以在定義檔案頭結構體的時候要加上#pragma pack(1)或者#pragma pack(2)是結構體內記憶體按一位元組或者二位元組對齊,執行就正確了。

#pragma pack(1)

typedef struct tagbitmapfileheader bitmapfileheader;

#pragma pack()

嵌入式Linux 讀取bmp檔案頭資訊

檔案頭結構體 typedef struct bitmapfileheader 函式如下 返回值 錯誤時返回 1,解析正確返回0 int bmp analyze unsigned char path 讀取檔案頭資訊 read fd,fheader,sizeof fheader printf bfsiz...

給RGB加上BMP檔案頭

實習時需要從相機取出的純rgb資料封裝上bmp檔案頭 需要將攝像頭採集到的影象資料 純淨的rgb,或bgr資料 加上檔案頭後暫存在記憶體中 如若寫入檔案僅需將memcpy換成fwrite即可。ifndef rgb2bmp h define rgb2bmp h 為拍攝的rgb資料加上bmp檔案頭 20...

BMP檔案的讀取

執行測試效果 void cmyview onreadbmp if strfilepath file fp fopen strfilepath,r bitmapfileheader fileheader bitmapinfo info fread fileheader,sizeof fileheade...