问题:
因为我学习的内容以及用OpenGL生成各种各样的纹理的时候总要用到各种各样的图像格式,对于并不熟悉各种各样的图形格式的我来说真是一个不小的困难,尤其是有的图像还可能有压缩,不过还好上上届学长给我留下了CXimage类这个好东西,下面就简要说说CXimage类的用法。
回答:
首先简单介绍一个CXimage类的图像:CXimage类作者是Davide Pizzolato,一位电子工程师,我还去他的网站看了他的照片,留着大胡子,呵呵。言归正传了。CXimage类可以处理大多数图像,它的类结构为:
Cximage
CxImageBMP CxImageJBG CxImageTGA
CxImageGIF CxImageJPG CxImageTIF
CxImageICo CxImagePNG
CxFile
CxIOFile CxMeMFile
CImageIterator
CxImage的功能可以顺利读取多种图像文件啦!!并且效率很高。
下面简单介绍一种用法来说说它的功能:
动态链接Cxiamge类,首先加入CXiamge类的头文件,dll
在程序里面加入
#include"xImage.h"
#pragma comment(lib, "cximage.lib")
这两句话是头文件和预编译指令。声明一个CXimage类,载入和显示,提取像素的点的基本方法为:
使用Cximage类要首先阅读它的英文文档,因为我的英文不好,好多函数都看不懂什么意思?郁闷!先介绍下它的一些基本的用法吧。
CxImage m_image; //声明一个Cximage类的对象
m_image.Load("D1.gif",CXIMAGE_FORMAT_GIF);//前面那个是文件名,后面的一个是文件的类型名,
CRect rect;
GetClientRect(&rect);
m_image.Draw(pDC->GetSafeHdc(),rect);//显示图片句柄,和显示区域
获的彩色图像的宽度和高度以及像素的数值
int sizeX,sizeY;
sizeX = image.GetWidth();
sizeY = image.GetHeight();
RGBQUAD col_image;
获得彩色图形的像素颜色值
col_image = image.GetPixelColor(x,y,false);
获得灰度图像的像素值:
unsigned char pix=image.GetPixelGray(x,y) //这里注意与彩色图形的差别.
//创建图片
CxImage mergeImage;
mergeImage.Create(6000, 6000, 24, CXIMAGE_FORMAT_PNG);///6000为长和宽
//保存图像
m_mergeImage.Save("combine.png",CXIMAGE_FORMAT_PNG);
就想写这么多了,因为我主要用CXimage类来生成纹理,所以其他的功能还没有用过,基本上他应该还有图形的傅里叶变换,图像的旋转,拉伸,颜色融合等。这个只有到具体的应用的时候再一一研究了。这是一个很好的免费的类。
它的运行平台为
Microsoft Visual C++ 6.0 (static library, DLL and OCX builds) - Microsoft Visual C++ .NET 2003 - Borland C++ Builder version 3 and version 6 - Kdevelop 2.1 with gcc 2.96 (Linux)
它的下载网址:
http://www.xdp.it/projects.htm / 这个应该是作者的个人网站,(要改成国际模式上网才行呦)