|
|
没加任何密的,图片只是打了个包而已,临时代码
int ReadBMPFileNameLength(BYTE * data)
{
int i=0;
while(*data)
{
i++;
data++;
}
return i;
}
void HmlFile()
{
HANDLE hFile,hFileMap;
BYTE *Data;
char* filename="D:\\Program Files\\HuaMuLan\\bmp\\Menu.pkg";
hFile=CreateFile(filename,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFile==INVALID_HANDLE_VALUE)
return;
hFileMap=CreateFileMapping(hFile,NULL,PAGE_READONLY,0,0,NULL);
if(hFileMap==NULL)
{
CloseHandle(hFile);
return ;
}
CloseHandle(hFile);
Data=(BYTE *)MapViewOfFile(hFileMap,FILE_MAP_READ,0,0,0);
if(Data==NULL)
return;
CloseHandle(hFileMap);
int Count;
//BYTE *curPoint=Data;
memcpy(&Count,&Data[0],4);
int FilePoint=4;
while(Count>0)
{
//取得文件名长度
int bmpFileNameLength=ReadBMPFileNameLength(&Data[FilePoint]);
if(bmpFileNameLength==0)
break;
char * bmpFileName=new char[bmpFileNameLength+1];
//memset(bmpFileName,0,sizeof(char)*bmpFileNameLength);
//取得文件名
memcpy(bmpFileName,&Data[FilePoint],bmpFileNameLength);
//标识结尾
bmpFileName[bmpFileNameLength]='\0';
char sbmpFileName[MAX_PATH];
sprintf(sbmpFileName,"d:\\huamulanimage\\%s",bmpFileName);
FilePoint +=bmpFileNameLength + 1;
DWORD bmpStart,bmpSize;
//取得文件位置
memcpy(&bmpStart,&Data[FilePoint],4);
FilePoint +=4;
//取得文件大小
memcpy(&bmpSize,&Data[FilePoint],4);
FilePoint +=4;
BYTE *bmpData=new BYTE[bmpSize];
memcpy(bmpData,&Data[bmpStart],bmpSize);
FILE* fp;
if((fp=fopen(sbmpFileName,"wb"))==NULL)
break;
fwrite(bmpData,bmpSize,1,fp);
fclose(fp);
delete [] bmpFileName;
delete [] bmpData;
Count--;
}
UnmapViewOfFile(Data);
return ;
}
一个室内场景 |
|