CxImage新手教程,图文并茂
作为一个游戏client程序猿,须要对图像处理有一定的知识。
CxImage是C++实现的功能强大的、能处理多种文件格式的图像管理类。它可以简单高速的实现图像的导入、保存、显示和变换。
同一时候又具有平台无关,免费开源,支持多种图片格式几何操作、图像处理、图像格式转换等长处。所以就从CxImage入手吧。
本文參考自http://www.cnblogs.com/kex1n/archive/2010/01/16/1649059.html,这篇文章讲的挺具体了,我在此基础上自己动手,然后通过图片,为了让跟我一样的刚開始学习的人更加高速入门。
一、下载源代码
去CxImage官网http://www.codeproject.com/Articles/1300/CxImage下载源代码。我下载时候的版本号是cximage600_full。解压源代码包:
各project对用的功能:
CxImage:cximage.lib – 静态库
CxImageCrtDll:cximagecrt.dll – 动态库
CxImageMfcDll:cximage.dll – 用于mfc的动态库
Demo:demo.exe – 链接cximage.lib和C库的程序
Demo2:demodll.exe – 链接cximagecrt.dll的程序
jasper、jbig、jpeg、mng、png、raw、tiff、zlib:静态C库
二、编译CxImage
1、解压源代码后,在解压文件夹下有一个CxImgLib.dsw工作空间文件。使用VC++6.0打开该工作空间文件。
2、Project -> Setting –> C/C++。在Category下拉列表中选择CodeGeneration,将Use run-time library中选择Multithreaded DLL。在Category下拉列表中选择Precompiled Headers,选择第一项:Not using Precompiled headers。
3、Build -> Batch Build -> 勾选你要编译的版本号库。
默认情况下是每一个库都有四个版本号,各自是Debug、Release、Unicode Debug、Unicode Release。
选择你要编译的版本号就可以。
三、使用CxImage
1、编译好了,新建一个目录,如mycximage。
在该目录下新建一个header目录和一个lib目录。将CxImage下的全部头文件都复制到header目录下,将刚才全部生成的lib文件复制到lib目录下。至此。你已经拥有了CxImage类库。
2、用VC++6.0新建一个基于对话框的MFC应用程序CxImageTest1。将刚才新建好的mycximage文件夹复制到project文件夹下。
在对话框上画一个button,用于将bitmap格式图片转为jpg和png格式。双击button,响应事件函数。
在CxImageTest1Dlg.cpp顶部增加代码:
// image头文件
#include "mycximage/header/ximage.h"
// 载入图片格式处理静态库
#pragma comment(lib, "mycximage/lib/cximage.lib")
#pragma comment(lib, "mycximage/lib/cximagecrtd.lib")
#pragma comment(lib, "mycximage/lib/jasper.lib")
#pragma comment(lib, "mycximage/lib/jbig.lib")
#pragma comment(lib, "mycximage/lib/Jpeg.lib")
#pragma comment(lib, "mycximage/lib/mng.lib")
#pragma comment(lib, "mycximage/lib/png.lib")
#pragma comment(lib, "mycximage/lib/Tiff.lib")
#pragma comment(lib, "mycximage/lib/zlib.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);
image.Save("export.png",CXIMAGE_FORMAT_PNG);
}
3、执行,点击button:
选择bitmap格式图片,生成jpg和png格式图片:
4、总结
CxImage提供了对图像操作的API,仅仅要了解API的作用就能够用CxImage进行图像操作开发了。
CxImage新手教程,图文并茂的更多相关文章
- Android基础新手教程——4.1.3 Activity登堂入室
Android基础新手教程--4.1.3 Activity登堂入室 标签(空格分隔): Android基础新手教程 本节引言: 好的,在学习了两节的Activity后相信大家已经知道怎样去使用Acti ...
- OpenCV 新手教程 之环境配置 + 图片匹配 matchTemplate
1.什么是OpenCV OpenCV的全称是:Open Source Computer Vision Library. OpenCV是一个基于(开源)发行的跨平台计算机视觉库,能够执行在Linux.W ...
- Web项目的发布新手教程
ASP.NET服务器发布新手教程 ——本文仅赠予第一次做Web项目,需要发布的新手们,转载的请注明出处. 首先我们说一下我们的需要的一个环境.我使用的是Visual Studio 2010,版本.NE ...
- APP设计尺寸规范大全,APP界面设计新手教程【官方版】(转)
正值25学堂一周年之际,同时站长和APP设计同仁们在群里(APP界面设计 UI设计交流群,APP界面设计⑥群 APPUI设计③群58946771 APP设计资源⑤群 386032923欢迎大家加入交流 ...
- ROS探索总结(三)——ROS新手教程【转】
转自:http://blog.csdn.net/hcx25909/article/details/8811313 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 一ROS的 ...
- 新手教程之使用Xib自定义UITableViewCell
新手教程之使用Xib自定义UITableViewCell 前言 首先:什么是UITableView?看图 其次:什么是cell? 然后:为什么要自定cell,UITableView不是自带的有cell ...
- MATLAB新手教程
MATLAB新手教程 .MATLAB的基本知识 1-1.基本运算与函数 在MATLAB下进行基本数学运算,仅仅需将运算式直接打入提示号(>>)之後,并按入Enter键就可以.比如 ...
- 【OpenCV十六新手教程】OpenCV角检测Harris角点检测
本系列文章由@浅墨_毛星云 出品.转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/29356187 作者:毛星云(浅墨) ...
- hibernate官方新手教程 (转载)
hibernate官方新手教程第一部分 - 第一个Hibernate程序 首先我们将创建一个简单的控制台(console-based)Hibernate程序.我们使用内置数据库(in-memory d ...
随机推荐
- CodeForces 605 E. Intergalaxy Trips
E. Intergalaxy Trips time limit per test:2 seconds memory limit per test:256 megabytes input:standar ...
- 【CF1043C】Smallest Word(构造)
题意:给定一个由a和b构成的字符串,可以选择翻转或不翻转他的每个前缀,翻转记为1不翻转记为0,求能将字符串排序的字典序最小的操作序列 n<=1e3 思路:考虑极长的一段a [t,w] 翻转t-1 ...
- js3:数据类型,数组,String各个属性,以及字符串表达式用eval计算
原文发布时间为:2008-11-08 -- 来源于本人的百度文章 [由搬家工具导入] <html> <head> <title>js</title> & ...
- [LeetCode] 4Sum hash表
Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = tar ...
- no update
cd /home/.gnupg/ mv gpg.conf gpgbake.conf pacman -S archlinux-keyring && pacman -Syu 如果还是不行, ...
- msm8917 GPIO Voh(min)
有些 pin 可以當成多種 function, 此例以 GPIO function P3 voltage 為例 Voh(min) = 1.67 - 0.45 = 1.22 V
- vue element-ui Tabs 标签页实现【更多】功能
element-ui Tabs本身是没有更多功能的,如果在外边添加一个更多按钮,又非常不好看, 而利用API中Tabs Attributes的before-leave勾子方法可以实现这个功能, 简单P ...
- NOI模拟题4 Problem A: 生成树(mst)
Solution 我们考虑答案的表达式: \[ ans = \sqrt{\frac{\sum_{i = 1}^{n - 1} (w_i - \overline{w})^2}{n - 1}} \] 其中 ...
- Maven在[INFO] Generating project in Interactive mode卡住的问题解决
我的环境: Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00) Maven ...
- 执行 innerHTML 里的 <script>
原文:执行 innerHTML 里的 <script> 背景 有时候我们会有把一整段 HTML 动态塞进页面的需求,例如渲染了一个模板,从服务器端获取了一段广告代码等.一般情况下我们使用 ...