力为的技术博客

联系 聚合 管理
  154 Posts :: 1 Stories :: 561 Comments :: 0 Trackbacks

 

问题:已知一块内存,知道里面是一张图片的数据,如何显示出来?

一种解决方法:
CImage(MFC or ATL)提供了一个加载内存中Image的成员函数HRESULT CImage::Load(IStream* pStream)。如何把指定的内存转换为IStream接口就成了需要解决的问题。最后发现获取一个ISteam还真是曲折:):


 

void  LoadMemImage( void *  pMemData,  long  len)
{
  HGLOBAL hGlobal 
=  GlobalAlloc(GMEM_MOVEABLE, len);
  
void *  pData  =  GlobalLock(hGlobal);
  memcpy(pData, pMemData, len);
  GlobalUnlock(hGlobal);

  IStream
*  pStream  =  NULL;
  
if  (CreateStreamOnHGlobal(hGlobal, TRUE,  & pStream)  ==  S_OK)
  
{
   CImage image;
   
if (SUCCEEDED(image.Load(pStream)))
   
{
    
// ..

   }

   pStream
-> Release();     
  }

  GlobalFree(hGlobal);

}

posted on 2006-06-10 16:49 力为 阅读(10041) 评论(14)  编辑 收藏 引用 所属分类: 6. COM&ATL&WTL3. VC&MFC&Qt

评论

# re: 用CImage加载内存里的Image 2006-06-10 19:36 Jerry Cat
若是楼主自己"琢磨"出来的, 在下就佩服得紧! 小弟叫Jerry Cat, 也是在这儿安了家的, 愿与楼主这样的高手交往!  回复  更多评论
  

# re: 用CImage加载内存里的Image 2006-06-11 14:38 力为
to Jerry Cat:
俺称不上高手,呵呵。但很高兴能与大家一起交流:)  回复  更多评论
  

# re: 用CImage加载内存里的Image 2006-07-05 01:24
正在做毕业设计,得用从来没学过的c++,查相关资料看到这里,冒昧的留言想问个很菜鸟的问题:怎么读入图片啊?就是一个程序的开始,要先读入一张图片(格式是jpg或者gif),然后再处理。
先谢过了!  回复  更多评论
  

# re: 用CImage加载内存里的Image 2006-07-06 18:43 mythma
用 CImage直接Load  回复  更多评论
  

# re: 用CImage加载内存里的Image 2007-03-08 16:19 凸-_-凸
低级  回复  更多评论
  

# re: 用CImage加载的Image 2008-04-12 15:38 wind
CImage img;
img.load("sample.jpg");
这样有错吗?怎么每次都有错啊?是不是要把图片载入资源啊?  回复  更多评论
  

# re: 用CImage加载内存里的Image 2008-04-13 19:11 力为
不需要的。
路径有问题不?  回复  更多评论
  

# re: 用CImage加载内存里的Image 2008-09-24 16:08 simon
有那么复杂么,简单的用个CREATE函数就可以了  回复  更多评论
  

# re: 用CImage加载内存里的Image 2008-09-25 19:03 初学vc
请问如何用CImage加载资料中已有的图片资料呢?  回复  更多评论
  

# re: 用CImage加载内存里的Image 2008-09-25 19:04 初学vc
请问如何用CImage加载资源中已有的图片资料呢?  回复  更多评论
  

# re: 用CImage加载内存里的Image 2011-03-24 12:11 XIEXIE
用CIMAGE::LOAD的具体代码是什么啊?怎么样让图片显示在Picture控件上??  回复  更多评论
  

# re: 用CImage加载内存里的Image 2011-03-25 14:40 力为
@XIEXIE
CImage image;
image.Load(L"yanzhao.jpg");
CDC* pDC = wndCtrl.GetDC();
image.Draw(hDC, &rect);  回复  更多评论
  

# re: 用CImage加载内存里的Image 2013-09-16 15:49 王培营
*pMemData代表的是什么意思  回复  更多评论
  

# re: 用CImage加载内存里的Image 2013-12-13 17:40 力为
内存里的image数据@王培营
  回复  更多评论
  


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理