|
|
/////////////////////////////////////////////
//读取BMP文件
/////////////////////////////////////////////
int LoadBMPFile(BMP_FILE bitmap, char *filename)
{
int file_handle; //文件句柄
UCHAR *temp_buffer = NULL;
OFSTRUCT file_data;
//打开文件
if ((file_handle = OpenFile(filename,&file_data,OF_READ))==-1)
{
MessageBox(NULL,TEXT("Open bmp File error!"),
TEXT("Wrong!"),MB_OK);
return(0);
}
//读取文件头
_lread(file_handle, &bitmap->bitmapfileheader,sizeof(BITMAPFILEHEADER));
//是否BMP图形格式
if (bitmap->bitmapfileheader.bfType!=BITMAP_ID)
{
//关闭文件
_lclose(file_handle);
MessageBox(NULL,TEXT("bmp File ID error!"),
TEXT("Wrong!"),MB_OK);
return(0);
}
//读取文件头
_lread(file_handle, &bitmap->bitmapinfoheader,sizeof(BITMAPINFOHEADER));
//读数据
_lseek(file_handle,-(int)(bitmap->bitmapinfoheader.biSizeImage),SEEK_END);
//将24位转为16位
if (bitmap->bitmapinfoheader.biBitCount==16 || bitmap->bitmapinfoheader.biBitCount==24)
{
//删除已有信息
if (bitmap->buffer)
free(bitmap->buffer);
//分配空间
if (!(bitmap->buffer = (UCHAR *)malloc(bitmap->bitmapinfoheader.biSizeImage)))
{
//关闭文件
_lclose(file_handle);
MessageBox(NULL,TEXT("bmp File buffer error!"),
TEXT("Wrong!"),MB_OK);
return(0);
}
//读取
_lread(file_handle,bitmap->buffer,bitmap->bitmapinfoheader.biSizeImage);
}
else
{
//出错
MessageBox(NULL,TEXT("bmp File read error!"),
TEXT("Wrong!"),MB_OK);
return(0);
}
//关闭文件
_lclose(file_handle);
//翻转图形
FlipBMPFile(bitmap->buffer,
bitmap->bitmapinfoheader.biWidth*(bitmap->bitmapinfoheader.biBitCount/8),
bitmap->bitmapinfoheader.biHeight);
return(1);
}
请教:
各位大哥:
_lseek(file_handle,-(int)(bitmap->bitmapinfoheader.biSizeImage),SEEK_END);
是什么意思啊?
再这里有什么用?
_lread(file_handle,bitmap->buffer,bitmap->bitmapinfoheader.biSizeImage);
这句话呢?又有什么用?
谢谢!
[em17] [em20] |
|