普通情况下,我可以用 CImage load 直接从本地磁盘加载图形资源
但是如果,我要是把资源放在ZIP包里面了,并且已经通过ZLIB解压了,但是该如何加载呢 PackReader _r; // 加载普通的ZIP
if (_r.Open("example.zip", NULL))
{
const char* file = "image1.bmp";
uLong size = _r.GetFileSize(file);
char* buf = new char[size + 1];
memset(buf, 0, size + 1); _r.ReadFile(file, buf, size); printf("%s\n", buf);
printf("%s\n", buf+10);
printf("%s\n", buf+14); delete buf; _r.Close();
}
但是如果,我要是把资源放在ZIP包里面了,并且已经通过ZLIB解压了,但是该如何加载呢 PackReader _r; // 加载普通的ZIP
if (_r.Open("example.zip", NULL))
{
const char* file = "image1.bmp";
uLong size = _r.GetFileSize(file);
char* buf = new char[size + 1];
memset(buf, 0, size + 1); _r.ReadFile(file, buf, size); printf("%s\n", buf);
printf("%s\n", buf+10);
printf("%s\n", buf+14); delete buf; _r.Close();
}
用unzip库
ZIPENTRY ze;
int i;
Bitmap* pImage;
FindZipItem(hSkin,strNameInZip,true,&i,&ze);
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, ze.unc_size);
void * pData = GlobalLock(hGlobal);
UnzipItem(hSkin,i, pData, ze.unc_size);
GlobalUnlock(hGlobal);
if (CreateStreamOnHGlobal(hGlobal, TRUE, &pStream) == S_OK)
{
pImage = new Bitmap(pStream);
if (pImage->GetLastStatus()!=Ok)
{
delete pImage;
pImage = NULL;
}
}