C++显示JPG文件

fstream file;
file.open("C:\\test11.jpg",ios::binary|ios::in|ios::out,_SH_DENYRW);
if (file.fail())
{
AfxMessageBox("打开文件出错!");
}
file.seekg(0,ios_base::end);
streampos ps = file.tellg();
int filesize = ps;
file.seekg(0,ios_base::beg);
char * filebuffer = (char*)malloc(filesize);
file.read(filebuffer,filesize);
file.close();






HGLOBAL hImageMemory=GlobalAlloc(GMEM_MOVEABLE,filesize);
void * pImageMemoy = GlobalLock(hImageMemory);
memcpy(pImageMemoy,filebuffer,filesize);
file.close();
GlobalUnlock(hImageMemory);


IStream *pIStream;
IPicture *pIPicture;
HRESULT ss = CreateStreamOnHGlobal(hImageMemory,FALSE,&pIStream);
HRESULT hr = OleLoadPicture(pIStream,filesize,FALSE,IID_IPicture,(LPVOID*)&(pIPicture));
if (SUCCEEDED(hr)&&pIPicture)
{
OLE_XSIZE_HIMETRIC hmwidth;
OLE_XSIZE_HIMETRIC hmheihgt;
pIPicture->get_Width(&hmwidth);
pIPicture->get_Height(&hmheihgt);
CDC  *pcdc = this->GetDlgItem(IDC_STATIC_PICTURE)->GetDC();//控件
HDC hDC = pcdc->GetSafeHdc();
pIPicture->Render(hDC,0,0,200,200,0,hmheihgt,hmwidth,-hmheihgt,NULL);
pIPicture->Release();
this->ReleaseDC(pcdc);
}
GlobalFree(hImageMemory);
pIStream->Release();
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值