知道有没有哪位仁兄有做过从只读文件系统中读取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才是,下面的几组数据也错了,我不知道为什么,请高手们指教......
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |