关于jpeg显示的问题 现在已经把jpeg文件读到内存缓冲区中,请问如何显示?我曾试过用ipicture接口,发现画面效果不太好,请问有什么比较有效的办法吗?谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.helpwork.com/downdata/book/programming/vc/book/VCdby/source%20code/Bitmap/jpeg.zip http://www.codeproject.com/bitmap/CXImage.asp不使用ipicture接口,使用jpeg.lib,实现了几个photoshop的功能。非常好! 谢谢两位老兄。但是,有没有简便一点的方法?我曾找过几个封装好的类库,可是我的难点在于jpeg文件是保存在内存缓冲区中的啊 我用IPicture接口实现的,效果很好啊 IPicture很好呀,画面效果不好是不是因为你放大显示的原因? 几位老兄说的都不错。哈哈,会给分的,放心。其实,并不是ipictrure不好,而是我传输的数据丢失,所以,才会那样。对了,是这样的,我在做一个东西,要求就是远程服务端把jpeg传过来,然后我马上显示。期间经过中转服务器转发,但是,现在有个问题,如果发送端发的太快,中转服务器缓冲区就会溢出,请问有什么好办法没有 另外,还有个问题,就是用ipicture接口,显示文字的效果不好,请问有何改良办法 VC调用JPEG ,此方法也适用于gif.void CPICView::OnDraw(CDC* pDC) { CPICDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); IPicture *pPic; IStream *pStm; CFileStatus fstatus; CFile file; LONG cb; if (file.Open("c:/test.jpg",CFile::modeRead)&&file.GetStatus("c:/test.jpg", fstatus)&& ((cb = fstatus.m_size) != -1)) { HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb); LPVOID pvData = NULL; if (hGlobal != NULL) { if ((pvData = GlobalLock(hGlobal)) != NULL) { file.ReadHuge(pvData, cb); GlobalUnlock(hGlobal); CreateStreamOnHGlobal(hGlobal, TRUE, &pStm); if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID* )&pPic))) { OLE_XSIZE_HIMETRIC hmWidth; OLE_YSIZE_HIMETRIC hmHeight; pPic->get_Width(&hmWidth); pPic->get_Height(&hmHeight); double fX,fY; fX = (double)pDC->GetDeviceCaps(HORZRES)*(double)hmWidth/((double)pDC->Ge tDeviceCaps(HORZSIZE)*100.0); fY = (double)pDC->GetDeviceCaps(VERTRES)*(double)hmHeight/((double)pDC->G etDeviceCaps(VERTSIZE)*100.0); if(FAILED(pPic->Render(*pDC,0,0,(DWORD)fX,(DWORD)fY,0,hmHeight,hmWidth,-h mHeight,NULL))) AfxMessageBox("Failed To Render The picture!"); pPic->Release(); } else AfxMessageBox("Error Loading Picture From Stream!"); } } } else AfxMessageBox("Can"t Open Image File!"); } 一个想做程序员的人 vc 将一个对话框显示在另一个对话框里面 如何安全地结束阻塞线程 为何在一个Win32DLL中AfxMessageBox:找不到标识符? 求教:如何实现全屏模式应用程序 得到IE控件的句柄后如何控制IE进行刷新或其它动作! 关于MAC获取 菜鸟的问题(如珍珠项链) Jasoncpp怎么在Jason文件中插入数据,急!!!!!!!!! 如何在dll中做快捷键 在线等待。。。如何将csdn论坛网页页面完整下载??? 传递数据?
非常好!
但是,有没有简便一点的方法?
我曾找过几个封装好的类库,可是我的难点在于jpeg文件是保存在内存缓冲区中的啊
其实,并不是ipictrure不好,而是我传输的数据丢失,所以,才会那样。
对了,是这样的,我在做一个东西,要求就是远程服务端把jpeg传过来,然后我马上显示。期间经过中转服务器转发,但是,现在有个问题,如果发送端发的太快,中转服务器缓冲区就会溢出,请问有什么好办法没有
void CPICView::OnDraw(CDC* pDC)
{
CPICDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc); IPicture *pPic;
IStream *pStm; CFileStatus fstatus;
CFile file;
LONG cb; if (file.Open("c:/test.jpg",CFile::modeRead)&&file.GetStatus("c:/test.jpg",
fstatus)&&
((cb = fstatus.m_size) != -1))
{
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb);
LPVOID pvData = NULL;
if (hGlobal != NULL)
{
if ((pvData = GlobalLock(hGlobal)) != NULL)
{
file.ReadHuge(pvData, cb);
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal, TRUE, &pStm); if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*
)&pPic)))
{
OLE_XSIZE_HIMETRIC hmWidth;
OLE_YSIZE_HIMETRIC hmHeight; pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight); double fX,fY;
fX = (double)pDC->GetDeviceCaps(HORZRES)*(double)hmWidth/((double)pDC->Ge
tDeviceCaps(HORZSIZE)*100.0);
fY = (double)pDC->GetDeviceCaps(VERTRES)*(double)hmHeight/((double)pDC->G
etDeviceCaps(VERTSIZE)*100.0);
if(FAILED(pPic->Render(*pDC,0,0,(DWORD)fX,(DWORD)fY,0,hmHeight,hmWidth,-h
mHeight,NULL)))
AfxMessageBox("Failed To Render The picture!");
pPic->Release();
}
else
AfxMessageBox("Error Loading Picture From Stream!");
}
}
}
else
AfxMessageBox("Can"t Open Image File!");
}