孔雀开发小屋

专注并致力于手机客户端开发
<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

统计

  • 随笔 - 103
  • 文章 - 0
  • 评论 - 251
  • 引用 - 0

常用链接

留言簿(38)

随笔分类

随笔档案

关注的博客

朋友的博客

搜索

  •  

最新评论

阅读排行榜

评论排行榜

CxImage入门

CxImage是什么

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 Channel Alpha通道操作

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,编译即可通过!

posted on 2009-12-31 23:15 孔雀 阅读(1601) 评论(1)  编辑 收藏 引用

评论

# re: CxImage入门 2010-01-13 16:29 welld_djj

的确是作完了但是会报一个错
  回复  更多评论    

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理