VC中利用GDI+进行图形编程,已知图片数据保存在BYTE数组中,需要通过这个BYTE创建一个Bitmap再进行相关处理,这个过程中间需要通过IStream来实现,代码如下:
void ByteToBitmap( BYTE* pImageData, int nSize )
{
HRESULT hr;
Status sr;
HGLOBAL hGlobal = GlobalAlloc( GMEM_MOVEABLE, nSize );
LPVOID pvData = NULL;
pvData = GlobalLock( hGlobal );
memcpy( pvData, pImageData, nSize );
GlobalUnlock( hGlobal );
IStream *pStream = NULL;
hr = CreateStreamOnHGlobal( hGlobal, TRUE, &pStream );
Bitmap bmp( pStream );
sr = bmp.GetLastStatus(); // sr = Ok,表示Bitmap创建成功。
……
……
GlobalFree( hGlobal ); // 使用Bitmap完后,需要释放资源,以免造成内存泄漏。
}