首页 > 系统相关 >把jpg文件读取到内存char* 再转换成CImage

把jpg文件读取到内存char* 再转换成CImage

时间:2022-12-23 18:14:08浏览次数:39  
标签:img hMem jpg char pStream CImage pMem

网络上找到大神写的转换方法,不过就记下来,学习学习;

当然转成CImage之后就可以从CImage转换成HBITMAP 了

复制代码
void DrawPic(CDC *pDC,char *buf,int len)
{
    //内存数据转换成流
    HGLOBAL hMem=GlobalAlloc(GMEM_FIXED,len);
    BYTE* pMem=(BYTE*)GlobalLock(hMem);
    memcpy(pMem,buf,len);
    IStream* pStream;
    HRESULT hr=CreateStreamOnHGlobal(pMem,FALSE,&pStream);

    //画图
    CImage img;
    img.Load(pStream);
    img.Draw(pDC->GetSafeHdc(),CPoint(0,0));

    //清理
    img.Destroy();
    pStream->Release();
    GlobalFree(hMem);
}
复制代码

 

帖子里同样也有了个疑问就是 GlobaLock 之后没有 unlock 大神给出的解释是:“这里用的固定块,GMEM_FIXED,没必要unlock”

标签:img,hMem,jpg,char,pStream,CImage,pMem
From: https://www.cnblogs.com/kn-zheng/p/17001270.html

相关文章