首先:创建内存文件,并将数据放入
BYTE* lpDataImg=new BYTE[length];
memcpy(lpDataImg,lpData,length);
m_image=NULL;
CMemFile memFile(lpData,length);
int size=memFile.GetLength();
IStream* pStmBmp = NULL;
HGLOBAL hMemBmp = GlobalAlloc(GMEM_FIXED, size);
if (hMemBmp == NULL) return;
创建流:
CreateStreamOnHGlobal(hMemBmp, FALSE, &pStmBmp);
if (pStmBmp == NULL)
{
GlobalFree(hMemBmp);
}
BYTE* pbyBmp = (BYTE *)GlobalLock(hMemBmp);
memFile.SeekToBegin();
memFile.Read(pbyBmp, size);
m_image=new Image(pStmBmp,FALSE);
if(m_image==NULL)
{
GlobalFree(hMemBmp);
delete lpDataImg;
}
m_ImageData.nWidth=m_image->GetWidth();
m_ImageData.nHeight=m_image->GetHeight();
delete lpDataImg;
本文介绍如何在GDI+中通过创建内存文件和IStream对象,将数据转换为Image实例。首先分配内存,拷贝数据,然后创建CMemFile对象。接着,利用GlobalAlloc和CreateStreamOnHGlobal创建IStream,读取数据到IStream,并用此流创建Image对象。最后,获取Image的宽度和高度信息。
697

被折叠的 条评论
为什么被折叠?



