資源簡介
VC6工程,使用GDI+將BMP圖像轉換為JPG格式,為了簡單起見,工程為命令行模式,有一段代碼是網上找的。

代碼片段和文件信息
#include?“windows.h“
#include?
#include?
#include?
#include?
#ifndef???ULONG_PTR??
#define???ULONG_PTR???unsigned???long*??
#endif?
#include???????
using???namespace???Gdiplus;??????
#pragma???comment(lib???“gdiplus.lib“)???//link???gdiplus.lib?
using?namespace?std;
int?IniBmpToJpg(EncoderParameters?*pEncodERParameters?CLSID*?pClsid)
{
????//-----------------設置EncodERParameters---------------------------------------
????long?lQualITy?=?80;
????pEncodERParameters->Count?=?1;
????//pEncodERParameters->Parameter[0].Guid?=?EncoderQualITy;?//這句可以去掉,去掉以后JPG文件最小化
????pEncodERParameters->Parameter[0].Type?=?EncoderParameterValueTypeLong;
????pEncodERParameters->Parameter[0].NumberOfValues?=?1;
????pEncodERParameters->Parameter[0].Value?=?&lQualITy;
//--------------------得到當前系統的?Clsid-------------------------------------------------
????UINT?num?=?0;??????????//?number?of?image?encoders
????UINT?size?=?0;????????//?size?of?the?image?encoder?array?in?bytes
????ImageCodecInfo*?pImageCodecInfo?=?NULL;
????GetImageEncodersSize(&num?&size);
????if(size?==?0)
????????return?-1;?//?Failure
????pImageCodecInfo?=?(ImageCodecInfo*)(malloc(size));
????if(pImageCodecInfo?==?NULL)
????????return?-1;?//?Failure
????GetImageEncoders(num?size?pImageCodecInfo);
????for(UINT?j=0;?j? {
????????if(wcscmp(pImageCodecInfo[j].MimeType?L“image/jpeg“)?==?0)
{
????????????*pClsid?=?pImageCodecInfo[j].Clsid;
????????????free(pImageCodecInfo);
????????????return?j;?//?Success
????????}???
????}
????free(pImageCodecInfo);
????return?-1;?//?Failure
}?
int?main(int?argcchar*?argv[])
{
if?(argc<3)
{
return?-1;
}
GdiplusStartupInput???gdiplusStartupInput;??
ULONG_PTR???????????????????????gdiplusToken;??
Gdiplus::GdiplusStartup(&gdiplusToken???&gdiplusStartupInput???NULL);
USES_CONVERSION;
CLSID?guidJPG;
EncoderParameters?encodERParams;
IniBmpToJpg(&encodERParams?&guidJPG);
Image?bmp1(T2W((LPCTSTR)argv[1]));
Status?status=bmp1.Save(T2W((LPCTSTR)argv[2])?&guidJPG?&encodERParams);
if?(status==Ok)
{
cout< }
else
{
cout< }
//Gdiplus::GdiplusShutdown(gdiplusToken);?
return?0;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4401??2010-04-15?14:26??ConsoleConvertBMP\ConsoleConvertBMP.dsp
?????文件????????559??2010-04-15?14:04??ConsoleConvertBMP\ConsoleConvertBMP.dsw
?????文件??????41984??2010-04-15?14:27??ConsoleConvertBMP\ConsoleConvertBMP.ncb
?????文件??????55808??2010-04-15?14:27??ConsoleConvertBMP\ConsoleConvertBMP.opt
?????文件???????1337??2010-04-15?14:27??ConsoleConvertBMP\ConsoleConvertBMP.plg
?????文件????????125??2010-04-15?14:27??ConsoleConvertBMP\ConsoleConvertBMP.positions
?????文件???????2411??2010-04-15?14:25??ConsoleConvertBMP\Main.cpp
?????文件??????65536??2010-04-15?14:27??ConsoleConvertBMP\Release\ConsoleConvertBMP.exe
?????目錄??????????0??2010-04-15?17:24??ConsoleConvertBMP\Release
?????目錄??????????0??2010-04-15?17:24??ConsoleConvertBMP
-----------?---------??----------?-----??----
???????????????172161????????????????????10
- 上一篇:dll釋放可執行程序。
- 下一篇:c語言鏈表的項目用鏈表實現的字典
評論
共有 條評論