jpg图像的显示问题
我已经完成了单幅图像的保存。
fp=fopen( "c:\1.jpg ", "w ");
fwrite(pframe,picsize,1,fp);
其中,pframe是保存图像数据的数组,picsize是图像的大小。现在想把图像显示出来,那位高人能指点下啊?
这里先谢谢了
[解决办法]
在OnDraw函数中调用如下代码:
::CoInitialize(NULL); // COM 初始化
HRESULT hr;
CFile file;
file.Open( TEXT( "c:\\1.jpg "), CFile::modeRead | CFile::shareDenyNone ); // 读入文件内容
DWORD dwSize = file.GetLength();
HGLOBAL hMem = ::GlobalAlloc( GMEM_MOVEABLE, dwSize );
LPVOID lpBuf = ::GlobalLock( hMem );
file.Read( lpBuf, dwSize );
file.Close();
::GlobalUnlock( hMem );
IStream * pStream = NULL;
IPicture * pPicture = NULL;
// 由 HGLOBAL 得到 IStream,参数 TRUE 表示释放 IStream 的同时,释放内存
hr = ::CreateStreamOnHGlobal( hMem, TRUE, &pStream );
ASSERT ( SUCCEEDED(hr) );
hr = ::OleLoadPicture( pStream, dwSize, TRUE, IID_IPicture, ( LPVOID * )&pPicture );
ASSERT(hr==S_OK);
long nWidth,nHeight; // 宽高,MM_HIMETRIC 模式,单位是0.01毫米
pPicture-> get_Width( &nWidth ); // 宽
pPicture-> get_Height( &nHeight ); // 高
////////原大显示//////
//CSize sz( nWidth, nHeight );
//pDC-> HIMETRICtoDP( &sz ); // 转换 MM_HIMETRIC 模式单位为 MM_TEXT 像素单位
//pPicture-> Render(pDC-> m_hDC,0,0,sz.cx,sz.cy,
//0,nHeight,nWidth,-nHeight,NULL);
////////按窗口尺寸显示////////
CRect rect;GetClientRect(&rect);
pPicture-> Render(pDC-> m_hDC,0,0,rect.Width(),rect.Height(),
0,nHeight,nWidth,-nHeight,NULL);
if ( pPicture ) pPicture-> Release();// 释放 IPicture 指针
if ( pStream ) pStream-> Release(); // 释放 IStream 指针,同时释放了 hMem
::CoUninitialize();
[解决办法]
pframe本身是什么格式?
[解决办法]
先用画笔看看保存的文件是否正确.显示JPEG有很多包装类都可以做到
[解决办法]
如果保存只是为了下次显示图片,可以保存pPicture指针