原创 CxImage使用方法经验

2009-11-1 20:01 6984 9 9 分类: 工程师职场

CxImage使用方法经验<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


2009.10.1


CxImage是不错的图像处理类,下载下来后,发现太复杂,详细说明的文档也没有,对我等VC新手来说只能慢慢摸索了。个人总结经验如下:


(一)安装


使用前要先打开CxImgLib.dsw,进行编辑成LIB库文件。随后的使用方法如下:


一、最复杂的方法,功能最好(占空间大):


"1.将以下几个目录拷贝到与我新建的项目目录同一级目录里,比如如下:


[CxImage]cximage.dsp


[jasper]jasper.dsp


[jbig]jbig.dsp


[jpeg]Jpeg.dsp


[mng]mng.dsp


[png]png.dsp


[raw]libdcr.dsp


[tiff]Tiff.dsp


[zlib]zlib.dsp


[我的项目]"


2.再将上面的dsp插入到我的项目的workspace中(add project


3.VC中的菜单project\dependencies中,将我的项目depend on到其它项目(即其它项目打勾)


4.VC中的菜单project\setting..中,


 C/C++\- Code Generation\- Use run-time library : 都要选Multithreaded DLL


C/C++\Precompiled headers : not using precompiled headers


C/C++\Code Generation\ Additional Include Directories:  输入  ..\cximage"


5.VC中的菜单project\set active project,选上我的项目


6.在我的项目的代码中,要加上#include "ximage.h"


 


二、最简单的使用方法(占空间小)


1.CXIMAGE项目中生成的所有*.lib文件(搜索一下),拷贝到我的项目的目录中:


./cximage.lib ./jasper.lib ./jbig.lib ./Jpeg.lib ./libdcr.lib ./mng.lib ./png.lib ./Tiff.lib ./zlib.lib


注意,这些lib的设置方式要和我的项目的设置方式一致,如都是release版本或者都是debug的版本


2.将这些lib文件insert到当前项目中即可


3. cximage目录下面所有的*.h拷到我的项目的目录之下


4.VC中的菜单project\setting..中,


 C/C++\- Code Generation\- Use run-time library : 都要选Multithreaded DLL


C/C++\Precompiled headers : not using precompiled headers"


5.在我的项目的代码中,要加上#include "ximage.h"


 


这样就能在我的项目中正常使用了。


 


(二)使用


其它摸索出来的使用:


 


创建和删除类对象 CxImage* image;


每次要用到时,就image = new CxImage();


然后可以image->Load(....)等操作了


每次用完时,就delete image;   //不可以 delete *image;"


从文件加载图像到类中 image.Load("image.bmp", CXIMAGE_FORMAT_BMP);


保存图像到文件 image.Save("image.jpg",CXIMAGE_FORMAT_JPG)


判断类中的图像是否有效 "image.IsValid()


//如果类中没有图像,这个函数返回假;


//如果先加载一个图像成功,这个函数就返回真;然后再LOAD另一个图像不成功,这个函数返回值仍是真!因为类中的图像仍存在!


 


从内存加载图像到类中(解码) 


CxImage* image;


image = new CxImage();


image->Decode( (BYTE*)databuf, size, CXIMAGE_FORMAT_PNG );


delete image;


//databuf指向的内存地址中已经有一个图像(可以是从图片文件中读出来的),size是图像大小


//这个函数将这个图像装载到image类中"


 


将图像保存到内存中(编码) 


long size="0";


BYTE* buffer="0";


image.Encode(buffer,size,image_type);


...


image.FreeMemory(buffer);"


 


将类中的图像转成HBITMAP句柄 HBITMAP m_bitmap = image.MakeBitmap(hDC);


//需要一个HDC,可以是HDC hDC = ::GetDC(NULL); 得到的 (最后再::ReleaseDC(NULL,hDC);


//也可以是CDC* hdc = m_picture.GetDC();  然后hdc->m_hDC就是HDC了(m_picture是一个PICTURE BOX)"


 


将类中的图像转成HANDLE HANDLE hDIB = image->CopyToHandle();


 


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
9
关闭 站长推荐上一条 /3 下一条