怎么用StretchDIBits直接显示JPEG图像?

lpj 2005-08-18 12:25:20
查StretchDIBits的文档,说是对于win98, win2000及以后的版本可以直接显示,
不过它给的例子里CHECKJPEGFORMAT,ExtEscape都需要windows的头文件来定义,
我查了自己的机器上相应的头文件都没有这些关键字的定义。

请问如何才能用StretchDIBits直接显示?速度是不是比使用jpeglib快?
...全文
373 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻开心 2005-09-06
  • 打赏
  • 举报
回复
cximage这个库,没有测试过
或者intel的jpeg库,它宣称比微软的快1倍
http://www.dogma.net/markn/articles/IntelJpgLibrary/
lpj 2005-09-06
  • 打赏
  • 举报
回复
利用这个帖子再问个问题,也是相关的,
请问怎么利用显卡硬解压功能编程?
lpj 2005-08-22
  • 打赏
  • 举报
回复
谢谢各位,
我希望能找到一个比jpeglib更快的jpeg解码方法,不知道大家知道不?
lixiaosan 2005-08-18
  • 打赏
  • 举报
回复
http://www.codeproject.com/bitmap/cximage.asp
http://www.codeproject.com/bitmap/pictureshow.asp
老夏Max 2005-08-18
  • 打赏
  • 举报
回复
使用GDI+操作之
DentistryDoctor 2005-08-18
  • 打赏
  • 举报
回复
使用IPicture
saliors 2005-08-18
  • 打赏
  • 举报
回复
用IPicture就可以了,程序:
HRESULT ShowPic(CString lpstrFile, HWND hwnd, int nScrWidth, int nScrHeight)
{
HDC hDC_Temp = ::GetDC(hwnd);

IPicture *pPic;
IStream *pStm;

BOOL bResult;

HANDLE hFile = NULL;
DWORD dwFileSize, dwByteRead;

// 打开硬盘中的图形文件
hFile = CreateFile(lpstrFile,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);

if (hFile != INVALID_HANDLE_VALUE)
{
dwFileSize = GetFileSize(hFile, NULL); // 获取文件字节数

if (dwFileSize == 0xFFFFFFFF)
return E_FAIL;
}
else
{
return E_FAIL;
}

// 分配全局存储空间
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize);
LPVOID pvData = NULL;

if (hGlobal == NULL)
return E_FAIL;

if ((pvData = GlobalLock(hGlobal)) == NULL) // 锁定分配内存块
return E_FAIL;

ReadFile(hFile, pvData, dwFileSize, &dwByteRead, NULL); // 把文件读入内存缓冲区

GlobalUnlock(hGlobal);

CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);

// 装入图形文件
bResult=OleLoadPicture(pStm, dwFileSize, TRUE, IID_IPicture, (LPVOID*)&pPic);

if(FAILED(bResult))
return E_FAIL;

OLE_XSIZE_HIMETRIC hmWidth; // 图片的真实宽度
OLE_YSIZE_HIMETRIC hmHeight; // 图片的真实高度
pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight);

// 将图形输出到屏幕上(有点像BitBlt)
bResult = pPic->Render(hDC_Temp,
0,
0,
nScrWidth,
nScrHeight,
0,
hmHeight,
hmWidth,
-hmHeight,
NULL);

pPic->Release();
pStm->Release();

CloseHandle(hFile); // 关闭打开的文件

if (SUCCEEDED(bResult))
{
return S_OK;
}
else
{
return E_FAIL;
}
}
teli_eurydice 2005-08-18
  • 打赏
  • 举报
回复
IPicture
老夏Max 2005-08-18
  • 打赏
  • 举报
回复
Cximage使用的就是jpeg的库,呵呵,只不过它支持更多种格式的图片而已。
lpj 2005-08-18
  • 打赏
  • 举报
回复
使用Cximage和CPicture解压jpeg图像能快过使用jpeglib吗?

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧