在VC++6.0中将JPG格式图片转换成BMP格式
思路:利用GDI+来完成
难点: (1)配置GDI开发环境,添加配置代码
(2)在当文档程序中添加转换代码
注意:本文档由getsavefilenameybdesire参考网上资料撰写完成,代码已经做过测试,可直接复制张贴
实现过程:
一、 配置GDI开发环境
(1) 下载GDI+ SDK for Visual C++ 6.0
deguru/code/legacy/gdi/GDIPlus.zip
下载的GDIPlus文件夹中有Includes,Lib文件夹和gdiplus.dll文件。
将Includes和Lib中的文件分别拷到VC6安装目录中的VC98\include和lib文件夹中;新建MFC项目后,才使用gdiplus.dll,到时候将它拷到对应工程的debug文件夹下。
(2) 新建MFC单文档应用程序show:
1、在StdAfx.h 中添加如下代码
#include <afxdtctl.h>
#define ULONG_PTR ULONG
#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib")
2、如(1)中所说,将gdiplus.dll拷贝到本工程的Debug或Release目录下
3、在show.h中的class CShowApp : public CWinApp中添加
private:
GdiplusStartupInput m_gdiplusStartupInput;
ULONG_PTR m_pGdiToken;
4、在show.cpp中的BOOL CShowApp::InitInstance()中添加
GdiplusStartup(&m_pGdiToken,&m_gdiplusStartupInput,NULL);
5、为CShowApp添加名字为ExitInstance的虚函数的,并在ExitInstance中添加如下退出GDI+的代码
GdiplusShutdown(m_pGdiToken);
return CWinApp::ExitInstance();
(3) 测试GDI+是否配置成功
void CShowView::OnDraw(CDC* pDC)
{
CShowDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
Graphics graphics(pDC->m_hDC);
Pen pen(Color(255, 0, 255));
graphics.DrawLine(&pen, 0, 0, 200, 100);
}
若能成功运行,表明GDI+配置成功
二、 添加转换代码,实现将打开的JPG格式文件保存成BMP格式文件
(1)在CSshowView中添加如下成员变量
CString strOpenFileName;
(2)在CSshowView中添加如下成员函数
1、在CSshowView中添加ToWChar函数
WCHAR* CShowView::ToWChar(char *str)
{
//在GDI+中,有关字符的参数类型全部都是WCHAR类型的
//该函数是将传统字符串进行转换
static WCHAR buffer[1024];
wcsset(buffer,0);
MultiByteToWideChar(CP_ACP,0,str,strlen(str),buffer,1024);
return buffer;
}
2、在CSshowView中添加GetImageCLSID函数
int CShowView::GetImageCLSID(const WCHAR *format, CLSID *pCLSID)
{
UINT num=0;
UINT size=0;
ImageCodecInfo* pImageCodecInfo=NULL;
GetImageEncodersSize(&num,&size);
if(size==0)
return FALSE; // 编码信息不可用
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论