通过BYTE数组创建Gdiplus::Bitmap

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完后,需要释放资源,以免造成内存泄漏。
}

你可能感兴趣的:(C++)