知道有没有哪位仁兄有做过从只读文件系统中读取BMP图象信息,我已经创建了非压缩的BMP文件-picturea,但是在读取BMP文件参数的时候出现了错误,原程序如下,请大侠们指教...
#include <stdio.h> #include <stddef.h> #include <system.h> #include <stdlib.h> #include "altera_avalon_lg_lcd_controller_regs.h"
/*===============bmp文件读写操作================*/
typedef struct { int bfType; long bfSize; int bfReserved1; int bfReserved2; long bfOffBits; } BITMAPFILEHEADER;
typedef struct { long biSize; long biWidth; long biHighth; int biPlanes; int biBitCount; long biCompress; long biSizeImage; long biXPelsPerMeter; long biYPelsPerMeter; long biClrUsed; long biClrImportant; } BITMAPINFOHEADER;
void main() { FILE* fp = NULL; /*short* frameBuffer1;*/ /* short* frameBuffer2;*/ /* frameBuffer1 = &SDRAM_BASE ;*/ /* frameBuffer2 = & (SDRAM_BASE + 0XFF0000);*/ BITMAPFILEHEADER FileHeader; /* * Open and print contents of ZipFS file 1. */ printf("Reading file 'picturea.bmp' from ZipFS..."); printf("sizeof(BITMAPFILEHEADER)=%d\n",sizeof(BITMAPFILEHEADER)); fp = fopen ("/mnt/rozipfs/picturea.bmp", "rb"); if (fp == NULL) { printf ("Cannot open file.\n"); exit (1); } fread(&FileHeader,1,sizeof(BITMAPFILEHEADER),fp);
printf("FileHeader.bfType=%X\n",FileHeader.bfType); printf("FileHeader.bfSize=%ld\n",FileHeader.bfSize); printf("FileHeader.bfReserved1=%d\n",FileHeader.bfReserved1); printf("FileHeader.bfReserved2=%d\n",FileHeader.bfReserved2); printf("FileHeader.bfOffBits=%ld\n",FileHeader.bfOffBits); fclose(fp); }
以下是调试结果:
Reading file 'picturea.bmp' from ZipFS... sizeof(BITMAPFILEHEADER)=20 FileHeader.bfType=84364D42 FileHeader.bfSize=3 FileHeader.bfReserved1=3538944 FileHeader.bfReserved2=2621440 FileHeader.bfOffBits=20971520
很明显FileHeader.bfType=84364D42是错的,因为我读取的是BMP图象格式,返回值应该是4D42才是,下面的几组数据也错了,我不知道为什么,请高手们指教...... |