QQ登录

只需一步,快速开始

124上位机VC MFC将位图转换为JPG PNG GIF格式图片

[ 复制链接 ]

124上位机VC MFC将位图转换为JPG PNG GIF格式图片

124上位机VC MFC将位图转换为JPG PNG GIF格式图片

124上位机VC MFC将位图转换为JPG PNG GIF格式图片


功能展示

图片格式的转换是时常用到的功能,VC中并没有直接封装功能控件给我们使用,我们得自己动手实现转换功能,位图是我们编程时极为常用的图片格式,如何将其转换为JPG格式呢? 我们当前例程实现这一功能,效果如图;
要点提示
通过微软的GDI+能够快速轻松实现位图转换为JPG PNG GIF图片格式;
GDI+使用前,得下载微软的GDIPLUS支持包,可从微软的管网下载,我们这里给大家进行了打包;
然后是添加头文件再进行简单的初始化操作,在CWinApp派生类的InitInstance函数中进行此项工作是最好的;






实现功能
1.新建基于对话框的应用程序
2.使用前准备GDI+:将例程根目录Include文件夹复制到自己工程根目录。
在StdAfx.h头文件包含GDI+ 头文件及库文件//使用GDI+第一步
#define UNICODE
#ifndef ULONG_PTR
#define ULONG_PTR unsigned long*
#endif
#include "Include/gdiplus.h"
using namespace Gdiplus;
#pragma comment(lib, "Include/gdiplus.lib")
在APP类的InitInstance()中进行初始化
//使用GDI+第二步
  GdiplusStartupInputgdiplusStartupInput;  ULONG_PTR           gdiplusToken;
  GdiplusStartup(&gdiplusToken,&gdiplusStartupInput, NULL);
在程序退出时 进行GDI+ 环境的关闭

//使用GDI+第三步   GdiplusShutdown(gdiplusToken); //关闭gdiplus的环境
3,准备好GDI+后,便是使用GDI+ 加载BMP图片,然后实现将打开的图片保存为其他格式功能;
拖拽一编辑框ID为IDC_EDIT1,拖拽两按钮控件<加载位图><保存为>用于打开位图与保存其他格式图片功能;
拖拽一图片控件ID改为IDC_RECT,用于显示打开的位图;
4.最后就是加载位图与保存为按钮的实现函数
void CGkbc8Dlg::OnLoadbmp()
{
  CFileDialog  dlg(TRUE,"bmp","工控编程吧",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
  "bmp文件(*.bmp)|*.bmp||",NULL);
  if(IDOK==dlg.DoModal())
  {
  SetDlgItemText(IDC_EDIT1,dlg.GetPathName());//显示图片的全路径
  BitmapbmBitmap(dlg.GetPathName().AllocSysString());//创建位图
  
  CDC*pDC=GetDlgItem(IDC_RECT)->GetDC();//获取控件DC
  Graphicsg(pDC->m_hDC);//创建绘图对像
  g.DrawImage(&bmBitmap,0,0) ;//绘制位图
  GetDlgItem(IDC_RECT)->ReleaseDC(pDC);//释放DC;
  }

}
  1. void CGkbc8Dlg::OnSave()
  2. {
  3.         CFileDialog dlg(FALSE,"jpg","工控编程吧",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
  4.                 "jpg文件(*.jpg)|*.jpg|png文件(*.png)|*.png|gif文件(*.gif)|*.gif|bmp文件(*.bmp)|*.bmp||",this);
  5.         if(IDOK==dlg.DoModal())
  6.         {
  7.                 CString sExt=dlg.GetPathName();
  8.                 int nIndex = sExt.ReverseFind('.');
  9.                 if (-1 == nIndex) return;
  10.                 sExt = sExt.Right(sExt.GetLength()-nIndex);

  11.                 //设置编码方式
  12.                 CLSID clsid;
  13.                 if(sExt == ".jpg")
  14.                         GetEnCoderClsid(L"image/jpeg", &clsid);
  15.                 if(sExt == ".png")
  16.                         GetEnCoderClsid(L"image/png", &clsid);
  17.                 if(sExt == ".gif")
  18.                         GetEnCoderClsid(L"image/gif", &clsid);
  19.                 if(sExt == ".bmp")
  20.                         GetEnCoderClsid(L"image/bmp", &clsid);

  21.                 //设置编码参数
  22.                 ULONG encoderQuality = 50; //压缩比例
  23.                 EncoderParameters encoderParameters;
  24.                 encoderParameters.Count = 1;
  25.                 encoderParameters.Parameter[0].Guid = EncoderQuality;
  26.                 encoderParameters.Parameter[0].Type = EncoderParameterValueTypeLong;
  27.                 encoderParameters.Parameter[0].NumberOfValues = 1;
  28.                 encoderParameters.Parameter[0].Value = &encoderQuality;
  29.                
  30.                 CString sPath;
  31.                 GetDlgItemText(IDC_EDIT1,sPath);//获取要转换的位图路径
  32.                
  33.                 Bitmap Bitmap(sPath.AllocSysString());
  34.                 Status status = Bitmap.Save(dlg.GetPathName().AllocSysString(), &clsid, &encoderParameters);
  35.                 if(status != Ok)
  36.                         MessageBox("图片转换失败!", "提示", MB_OK|MB_ICONWARNING);
  37.         }
  38. }
复制代码
我们来演示下功能实现的整个过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:124.上位机VC MFC将位图转换为JPG PNG GIF格式图片.rar 
文件大小:1.23 MB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索