CxImage的使用

来源:互联网 发布:药典软件 编辑:程序博客网 时间:2024/05/05 01:41
 CxImage是C++实现的功能强大的、能处理多种文件格式的图像管理类。它能够简单快速的实现图像的导入、保存、显示和变换。

为什么使用CxImage

u它是平台无关的

u它是自由软件、免费的、开源的

u支持多种平面格式:BMP、GIF、ICO、TGA、JPEG、PCX、PNG、TIFF、MNG、RAS等,还有更多!

u功能强大:几何变换、图像处理、图像格式转换等。

u使用简单:下面的入门教程会给你展示这一点。

 

CxImage的功能

Constructors 构造函数

Initialization 初始化

File文件操作,主要是编解码

Generic图像基本变化

DSP图像处理操作

Painting绘图操作

Multiple Images多帧图像操作

Transparency透明层操作

Palette调色板操作

Pixels像素操作

Region Selection区域选择操作

Alpha ChannelAlpha通道操作

Layers图像层操作

Attributes图像属性操作

Miscellaneous杂项

 

呵呵,够强大吧!一个类库再好,不能为我们所用,则一切都是空谈,怎么用,请看详细步骤:

CxImage使用入门

1.去这里:http://www.codeproject.com/KB/graphics/cximage.aspx,下载CxImage的源代码。在 codeproject没有账户的兄弟姐妹需要先注册一个哦,非常简单,几秒钟就可以了!该页面上有两个可以下载的东东,一个是CxImage的源代码,另一个是用CxImage类库开发的一个完整的Demo,你可以看一下这个Demo,就知道它的功能有多强大了!

 

2.编译CxImage。解压源码包,在解压后的目录下有一个CxImageLib.dsw工作空间文件,使用VC++ 6.0 打开该工作空间文件。做以下事情:

Project->Settings->C/C++,在Category下拉列表中选择Code Generation,将Use rum-time libary中选择MultiThread DLL.在 Category下拉列表中选择 Precompiled Headers中,选择第一项: Not using Precompiled headers.

Build->Batch Build->勾选你要编译的版本库。默认情况下是每个库都有四个版本,分别是Debug、Release、Unicode Debug、Unicode Release.选择你想要编译的版本即可。

等待几分钟,即可编译好。

新建立一个文件夹,如mycximage。在该文件夹下新建一个header文件夹和一个lib文件夹。将CxImage下的所有头文件都拷贝到header文件夹下,将刚才所有生成的lib文件拷贝到lib文件夹下。至此,你已经拥有了CxImage类库。

打开VC++6.0,新建立一个基于对话框的MFC应用程序,叫Test。我们来完成一个将BMP位图转换成JPEG格式的小程序。在对话框上画一个按钮,双击按钮,响应事件函数。

将刚才我们建立好的mycximage文件夹拷贝到你的工程目录下。在TestDlg.cpp文件顶部,加入以下代码:

#include ”mycximage/header/ximage.h”

 

#pragma comment(lib, ”mycximage/lib/png.lib”)

#pragma comment(lib, ”mycximage/lib/libdcr.lib”)

#pragma comment(lib, ”mycximage/lib/jpeg.lib”)

#pragma comment(lib, ”mycximage/lib/zlib.lib”)

#pragma comment(lib, ”mycximage/lib/tiff.lib”)

#pragma comment(lib, ”mycximage/lib/jasper.lib”)

#pragma comment(lib, ”mycximage/lib/cximage.lib”)

#pragma comment(lib, ”mycximage/lib/mng.lib”)

 

在你的事件响应函数中添加一下代码:

 

CxImage image;

CString strFileName;// 图像文件名

CFileDialog dlg( TRUE, ”BMP”, NULL, OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY, ”所有图像文件(*.*)|*.*|BMP图像文件(*.BMP)|*.BMP|JPG格式图像(*.JPG)|*.JPG||”);

dlg.DoModal();

// 获取文件名

strFileName = dlg.GetFileName();

// 判断文件名是否为空

if (strFileName.GetLength() == 0)

{

return;

}

// 加载BMP位图

image.Load( strFileName.GetBuffer( strFileName.GetLength()), CXIMAGE_FORMAT_BMP );

// 判断图像是否有效

if (image.IsValid())

{

// 判断图像颜色数

if (!image.IsGrayScale())

image.IncreaseBpp( 24 );

// 设置Jpeg图像的质量

image.SetJpegQuality( 80 );

// 将位图转换成JPEG格式图像

image.Save(”export.jpg”,CXIMAGE_FORMAT_JPG);

}

 

呵呵,看看效果吧!你已经完成了将指定位图转换成JPEG格式的功能!就是这么简单!

后记

如果各位XDJM按照我的步骤一步一步来,应该是肯定可以成功的!

本文中所述的是在VC++ 6.0中完成。而对于编译好的库,在VS2005中也是可以直接用的。如果上述同样的代码在VS2005中编译不能通过,你需要在工程属性中将字符集设置为Not Set,编译即可通过!

原创粉丝点击