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文件夹中有IncludesLib文件夹和gdiplus.dll文件。
IncludesLib中的文件分别拷到VC6安装目录中的VC98\includelib文件夹中;新建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拷贝到本工程的DebugRelease目录下
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小时内删除。