将BMP转换为JPG 我现在有了一个程序能够捕捉到一写图片了 ,可以把他们存储为BMP格式的,但是我觉得这格式占用的空间太大了 ,所以想把它转换为JPG格式的,我应该怎么做啊??有没有之间生成JPG格式的函数的啊?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用CXimage,里面有转换的demo的,比较简单的 用GDI+直接转换或者找c转换算法 以下代码就可以,.net2003环境,如果你用vc6.0,把.net2003下"atlImage.h"拷贝出来就可以了。#include "atlImage.h"CImage image;image.Load( "c:\\bmp.bmp");HRESULT b = image.Save( "c:\\jpg.jpg" ); CImage类内部实际上也是使用的GDI+ Image类,不过它作了些封装,使用起来更方便了。 使用gdi+的Image,bitmap类也比较方便! CString sImgName; CLSID jpgClsid; GetEncoderClsid(L"image/jpeg", &jpgClsid); Rect rect(0,0,m_ImageData.nWidth ,m_ImageData.nHeight); Bitmap bmp(m_ImageData.nWidth,m_ImageData.nHeight); Graphics *gs=Graphics::FromImage(&bmp); gs->DrawImage(m_image,rect); gs->Flush(); GetEncoderClsid(L"image/jpeg", &jpgClsid); sImgName=sPath+"testImg.jpg"; bmp.Save(sImgName.AllocSysString(),&jpgClsid); int GetEncoderClsid(const WCHAR* format, CLSID* pClsid){ 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 < num; ++j) { if( wcscmp(pImageCodecInfo[j].MimeType, format) == 0 ) { *pClsid = pImageCodecInfo[j].Clsid; free(pImageCodecInfo); return j; // Success } } free(pImageCodecInfo); return -1; // Failure} 未声明的标识符 如何利用indesign cs4 sdk 制作插件 关于getpeername。请教高数 GPS包头的问题 为什么我的MFC小程序屏蔽不了,ESC和回车 一个有关 ADO 的问题 为什么数据库中有数据的时候不能进行操作?(基于ODBC/sql server) 各位大侠江湖危急!!! VC 编译工具经常遇到的一个小问题! ISAPI中如何编写一个统一的入口函数? vc实时通信.. 动态库和静态库
CImage image;
image.Load( "c:\\bmp.bmp");
HRESULT b = image.Save( "c:\\jpg.jpg" );
CLSID jpgClsid;
GetEncoderClsid(L"image/jpeg", &jpgClsid);
Rect rect(0,0,m_ImageData.nWidth ,m_ImageData.nHeight);
Bitmap bmp(m_ImageData.nWidth,m_ImageData.nHeight);
Graphics *gs=Graphics::FromImage(&bmp); gs->DrawImage(m_image,rect);
gs->Flush();
GetEncoderClsid(L"image/jpeg", &jpgClsid);
sImgName=sPath+"testImg.jpg";
bmp.Save(sImgName.AllocSysString(),&jpgClsid);
{
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 < num; ++j)
{
if( wcscmp(pImageCodecInfo[j].MimeType, format) == 0 )
{
*pClsid = pImageCodecInfo[j].Clsid;
free(pImageCodecInfo);
return j; // Success
}
} free(pImageCodecInfo);
return -1; // Failure
}