VC打开bmp文件,读取信息

来源:互联网 发布:苹果6怎么看网络电影 编辑:程序博客网 时间:2024/04/29 02:24

 

////////////////////////////////////////////

FILE *fopen( const char *filename, const char *mode );mode一般为"r"或者"w",Opens for reading. Opens an empty file for writing.

fopen("G:\\test.txt",'w'); 可行

filename = dlg.GetPathName(); 可以获得路径

///////////////////////////////////////////////////////////

fread: Reads data from a stream 从一个流中读数据

Pointer to FILE structure

int fread(void *buffer, int size, int count, FILE *stream);

  参 数:用于接收数据的地址(字符型指针)(buffer) Storage location for data

  单个元素的大小(size) Item size in bytes

  元素个数(count)Maximum number of items to be read

  提供数据的文件指针(stream)

  返回值:成功读取的元素个数

////////////////////////////////////////////


打开文件后读取bmp文件中的数据:

FILE *fp=fopen(filename,"r"); //按照filename的路径打开文件

BITMAPFILEHEADER fileheader;
BITMAPINFO info;

fread(&fileheader,sizeof(fileheader),1,fp); //读取头文件信息

if(fileheader.bfType!=0x4D42)
{
  pDC->TextOut(100,200,"无位图文件 请选择位图文件");
  fclose(fp);
  return ;
}

fread(&info.bmiHeader, sizeof(BITMAPINFOHEADER), 1, fp); /*读取信息头*/
long width=info.bmiHeader.biWidth;
long height=info.bmiHeader.biHeight; //位图高度及宽度
UCHAR *buffer=new UCHAR[info.bmiHeader.biSizeImage]; //位图的大小
fseek(fp,fileheader.bfOffBits,0); //重定位流上的文件指针,接下来的操作将从新位置开始
fread(buffer,info.bmiHeader.biSizeImage,1,fp);

原创粉丝点击