用CxImage将BMP位图转换成JPEG格式
1.从http://www.xdp.it/download.htm下载cximage600_full。
2.解压cximage600_full,在解压后的目录下有一个CxImageLib.dsw工作空间文件,使用VC++ 6.0 打开该工作空间文件。
3.找到CxImage项目中的ximacfg.h文件,将CXIMAGE_SUPPORT_BMP、CXIMAGE_SUPPORT_GIF、CXIMAGE_SUPPORT_JPG三项保持为1,其余都设置为0,设置好后如下所示,注意,即便我们用不到GIF格式的图片,这里也必须设置为1。
// CxImage supported formats
#define CXIMAGE_SUPPORT_BMP 1
#define CXIMAGE_SUPPORT_GIF 1
#define CXIMAGE_SUPPORT_JPG 1
#define CXIMAGE_SUPPORT_PNG 0
#define CXIMAGE_SUPPORT_ICO 0
#define CXIMAGE_SUPPORT_TIF 0
#define CXIMAGE_SUPPORT_TGA 0
#define CXIMAGE_SUPPORT_PCX 0
#define CXIMAGE_SUPPORT_WBMP 0
#define CXIMAGE_SUPPORT_WMF 0
#define CXIMAGE_SUPPORT_JP2 0
#define CXIMAGE_SUPPORT_JPC 0
#define CXIMAGE_SUPPORT_PGX 0
#define CXIMAGE_SUPPORT_PNM 0
#define CXIMAGE_SUPPORT_RAS 0
#define CXIMAGE_SUPPORT_JBG 0
#define CXIMAGE_SUPPORT_MNG 0
#define CXIMAGE_SUPPORT_SKA 0
#define CXIMAGE_SUPPORT_RAW 0
将CxImage项目的编译模式设置为Debug,然后编译CxImage项目。
将jpeg项目的编译模式设置为Debug,然后编译jpeg项目。
新建一个文件夹,如mycximage。在该文件夹下新建一个header文件夹和一个lib文件夹。将CxImage下的所有头文件都拷贝到header文件夹下,将cximage600_full\CxImage\Debug和cximage600_full\jpeg\Debug下的生成的lib文件拷贝到lib文件夹下。至此,你已经拥有了CxImage类库。
4.新建立一个基于对话框的MFC应用程序,叫Test。
5. 将刚才我们建立好的mycximage文件夹拷贝到Test工程目录下。在菜单中选择Project->Settings...->C/C++->Preprocessor->Additional include directories,在这里添加header文件夹的路径,如下所示:
mycximage/header
在菜单中选择Project->Add to Project->Files... ,在跳出的文件对话框中选择存放在mycximage\lib文件夹下的cximage.lib和jpeg.lib。
6.在TestDlg.cpp文件顶部,加入以下代码:
#include "ximage.h"
在对话框上添加一个按钮,在按钮的事件响应函数中添加以下代码:
CxImage image;
// bmp -> jpg
image.Load("image.bmp", CXIMAGE_FORMAT_BMP);
if (image.IsValid())
{
if(!image.IsGrayScale()) image.IncreaseBpp(24);
image.SetJpegQuality(99);
image.Save("image.jpg",CXIMAGE_FORMAT_JPG);
}
7.在Test项目的根目录下拷贝一个image.bmp,运行程序后,点击按钮,会在根目录下自动生成image.jpg。