显示JPEG图像
来源:互联网 发布:信息发布网站源码 编辑:程序博客网 时间:2024/05/18 10:20
JPEG(Joint Photograhic Experts Group)是一种高压缩比的图像格式,是目前最常用的图像格式之一。本节介绍如何在对话框中显示JPEG图像。分为以下几个步骤:
(1)调用CreateFile()函数打开JPG文件,获取文件的大小,调用GlobalAlloc()函数分配图像占用的内存空间。
(2)调用ReadFile()函数读取文件内容放置到内存中,并调用CreateStreamOnHGlobal()函数根据文件内容创建数据流。
(3)调用OleLoadPicture()函数将数据流载入PICTURE对象中,根据JPEG图像的高和宽的比例以及画布的高和宽,计算可以显示的图像范围。调用PICTURE对象的Render()函数在画布上渲染图像。具体代码如下:
- void CPlayMultiMediaDlg::OnButtonShowjpeg() // 显示JPEG图像
- {
- CDC* pDC=GetDC(); // 获取设备上下文
- LPPICTURE gpPicture = NULL;
- CString fileName = "C:\\BeautyGirl.JPG"; // 定义文件路径变量
- HANDLE hFile = CreateFile(fileName, GENERIC_READ, 0, NULL,
- OPEN_EXISTING, 0, NULL); // 创建文件句柄
- f (hFile==INVALID_HANDLE_VALUE) return;
- DWORD dwFileSize = GetFileSize(hFile, NULL); // 取得文件大小
- if (dwFileSize == -1) return;
- LPVOID pvData=NULL;
- HGLOBAL hGlobal= GlobalAlloc(GMEM_MOVEABLE, dwFileSize);
- // 根据文件大小分配内存
- if (hGlobal != NULL) pvData=GlobalLock(hGlobal); // 锁定存储区
- if (pvData == NULL) return;
- DWORD dwBytesRead = 0;
- BOOL bRead= ReadFile(hFile, pvData, dwFileSize, &dwBytesRead, NULL);
- // 读取文件
- GlobalUnlock(hGlobal); // 释放存储区
- CloseHandle(hFile); // 关闭文件句柄
- if (!bRead) return;
- LPSTREAM pstm=NULL;
- HRESULT hr=CreateStreamOnHGlobal(hGlobal, true, &pstm); // 创建数据流
- if (!SUCCEEDED(hr)) return;
- if (gpPicture) gpPicture->Release();
- hr = OleLoadPicture(pstm, dwFileSize, false, IID_IPicture, (LPVOID*)&
- gpPicture); // 装载图片
- if (!SUCCEEDED(hr)) return;
- pstm->Release();
- HDC hdc=pDC->GetSafeHdc(); // 获取上下文
- if (gpPicture) // 如果图片有效
- {
- long hmWidth, hmHeight; // 取得图片的宽和高
- gpPicture->get_Width(&hmWidth);
- gpPicture->get_Height(&hmHeight);
- int inch = 2540; // 宽、高转换为像素
- int nWidth = MulDiv(hmWidth, GetDeviceCaps(hdc, LOGPIXELSX), inch);
- int nHeight = MulDiv(hmHeight, GetDeviceCaps(hdc, LOGPIXELSY),
- inch);
- RECT rc;
- GetClientRect(&rc); // 取得客户区
- int width = rc.right - rc.left;
- int height = rc.bottom - rc.top;
- gpPicture->Render(hdc, 0, 0, (int)height*hmWidth/hmHeight, height,
- 0, hmHeight, hmWidth, -hmHeight, &rc); // 渲染图片
- }
- }
0 0
- 显示JPEG图像
- c语言 图像显示jpeg
- 在Linux控制台下显示JPEG图像
- 在Linux控制台下显示JPEG图像
- VC显示JPEG和GIF图像
- VC下显示JPEG、GIF图像
- 在Linux控制台下显示JPEG图像
- 在Linux控制台下显示JPEG图像
- 在Linux控制台下显示JPEG图像
- 在Linux控制台下显示JPEG图像
- VC 如何显示JPEG、GIF格式图像
- 转贴:VC下显示JPEG、GIF图像的简便方法
- 在VC中显示JPEG和GIF图像
- VC下显示JPEG、GIF图像的简便方法
- JPEG图形显示、图像数据的DB存取。
- VC保存和显示数据库图像(JPG、JPEG)
- VC保存和显示数据库图像(JPG、JPEG)
- VC保存和显示数据库图像(JPG、JPEG)
- VS2008环境下编译Sqlite源代码
- BNUOJ 1020 信息战(六)——军队体检 (STL之优先队列)
- Java、C#双语版HttpHelper类(解决网页抓取乱码问题)
- 数据权限设计
- 页面属性 web.config OutputCache
- 显示JPEG图像
- ios: 仿照【ONE】应用中的阅读滑动效果
- 介绍几个关于C/C++程序调试的函数
- 周赛反思
- 23种设计模式解析
- Altium Designer 10画PCB图,怎样增大走线和覆铜之间的距离?
- linux标准学习之-LSB(上)
- gstreamer how to use hardware decoder in playbin2
- 处理焦点项目2