IMAGE类能打开一个已经在内存中的png文件吗?解决思路
IMAGE类能打开一个已经在内存中的png文件吗?
我们知道,用:
Image image(L"skin.png", TRUE);
这样的语句,可以打开并读入一个硬盘上的png文件,但是如果该png文件已经读到内存中(比如它的数据都读到char buf[100000]中,并且长度为int flen)。
这种情况下,有办法用Image类打开吗?如何写呢?
------解决方案--------------------
以前有人问过类似问题, 可以参考如下代码 IStream
我们知道,用:
Image image(L"skin.png", TRUE);
这样的语句,可以打开并读入一个硬盘上的png文件,但是如果该png文件已经读到内存中(比如它的数据都读到char buf[100000]中,并且长度为int flen)。
这种情况下,有办法用Image类打开吗?如何写呢?
------解决方案--------------------
以前有人问过类似问题, 可以参考如下代码 IStream
HBITMAP NGdi::LoadBitmap(BYTE *pImgDat, int nSize)
{
Gdiplus::Bitmap *pBm;
Gdiplus::Color crBk;
Gdiplus::Status nRetVal;
IStream *pStream;
HGLOBAL hMem;
VOID *pDat;
HBITMAP hBitmap;
hBitmap = NULL;
crBk = Gdiplus::Color::White;
GdiPlusInit();
hMem = GlobalAlloc(GMEM_FIXED, nSize);
pDat = GlobalLock(hMem);
memcpy(pDat, pImgDat, nSize);
GlobalUnlock(pDat);
CreateStreamOnHGlobal(hMem, FALSE, &pStream);
pBm = pBm->FromStream(pStream);
nRetVal = pBm->GetHBITMAP(crBk, &hBitmap);
delete pBm;
GlobalFree(hMem);
pStream->Release();
return hBitmap;
}