快速业务通道

wince下读取jpg等文件

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-15

  感觉还是不够细心,没有看IImage 接口的源码,非要到走投无路时才去瞄一下,图形图象确实要细心,总算搞定了,这个周末可以休息下了,看了多普达S1精英版好长时间了,周末去把它买了!谗了我好久了.

  HBITMAP CImageLoader::loadImageFile( CString &strFileName)

  {

  int n_start=0,n_end=0;

  GetPos(n_start,n_end,strFileName);

  CString m_filename(L"1.data");//文件名

  CFile m_file(m_filename,CFile::modeRead );

  m_file.Seek(n_start,CFile::begin);

  //获取文件长度

  DWORD m_filelen =n_end-n_start;//m_file.GetLength()

  CString str=L"^-^";

  str.Format(L"%d",m_filelen);

  AfxMessageBox(str);

  //在堆上分配空间

  HGLOBAL m_hglobal = GlobalAlloc(GMEM_MOVEABLE,m_filelen);

  LPVOID pvdata = NULL;

  //锁定堆空间,获取指向堆空间的指针

  pvdata = GlobalLock(m_hglobal);

  //将文件数据读区到堆中

  m_file.Read(pvdata,m_filelen);

  IStream* m_stream;

  GlobalUnlock(m_hglobal);

  //在堆中创建流对象

  CreateStreamOnHGlobal(m_hglobal,TRUE,&m_stream);

  IImagingFactory *pImgFactory =NULL;

  IImage *pImage =NULL;

  CoInitializeEx(NULL,COINIT_MULTITHREADED);

  HBITMAP hResult =0;

  if (SUCCEEDED(CoCreateInstance(CLSID_ImagingFactory,

  NULL,

  CLSCTX_INPROC_SERVER,

  IID_IImagingFactory,

  (void **)&pImgFactory)))

  {

  ImageInfo imageInfo;

  //直接将流数据传进去

  if(SUCCEEDED(pImgFactory->CreateImageFromStream(m_stream,&pImage))

  // if(SUCCEEDED(pImgFactory->CreateImageFromFile(strFileName,&pImage))

  && SUCCEEDED(pImage->GetImageInfo(&imageInfo)))

  {

  CWindowDC dc(0);

  CDC dcBitmap;

  dcBitmap.CreateCompatibleDC(&dc);

  hResult =CreateCompatibleBitmap(dc.GetSafeHdc(),imageInfo.Width,imageInfo.Height);

  if(hResult){

  HGDIOBJ hOldBitmap = dcBitmap.SelectObject(hResult);

  pImage->Draw(dcBitmap.GetSafeHdc(),CRect(0,0,imageInfo.Width,imageInfo.Height),NULL);

Empire CMS,phome.net

  dcBitmap.SelectObject(hOldBitmap);

  }

  pImage->Release();

  }

  pImgFactory->Release();

  }

  CoUninitialize();

  return hResult;

  }

Empire CMS,phome.net

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号