GDI+中使用Image从IStream创建图像

来源:互联网 发布:淘宝店铺级别分类 编辑:程序博客网 时间:2024/06/07 19:50
   首先:创建内存文件,并将数据放入
       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;