使用CxImage实现图像格式转换.doc_第1页
使用CxImage实现图像格式转换.doc_第2页
使用CxImage实现图像格式转换.doc_第3页
使用CxImage实现图像格式转换.doc_第4页
使用CxImage实现图像格式转换.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

使用CxImage实现图像格式转换l 引言目前CxImage支持的图像格式包括:bmp、gif、jpg、png、ico、tif、tga、pcx、wbmp、wmf、jp2、jpc、pgx、pnm、ras、jbg、mng、ska、raw和psd;CxImage中所包含的图像操作可通过打开index.htm来查看;l 下载与解压1 从/projects/cximage/下载最新的cximage702_full源码,并解压到文件夹cximage702_full中;l 编译cximage702_full2 以管理员身份打开cximage702_full文件夹下的CxImageFull_vc10.sln工程,便可看到解决方案中的14个项目:其中cximagecrtdll, cxiamgemfcdll是用以支持动态链接库的方式加入所需的项目,如果不需要动态链接,则不需要编译运行;demo和demodll是示例的两个项目,其实是一个项目的不同的外部链接输入配置,前者使用静态链接,后者使用动态链接。动态链接和静态链接项目所需的库除了头文件外是完全不一样的。注:vs2010设置以管理员身份启动的方法:(右击快捷键,选择以管理员身份启动即可)a. 找到VS2010的快捷方式:右击打开文件位置b. 找到VS2010的启动项目devenv.exe:右击属性兼容性特权等级,以管理员权限运行;如果需要每个用户都以管理员权限运行,还可以更改所有用户的设置特权等级,以管理员权限运行。c. 然后在项目的打开方式中确保以VS2010为默认打开程序就好了。3 在编译之前先将每个工程属性的Character Set由原先的Use Unicode Character Set改为Use Multi-ByteCharacter Set(否则,在使用该库时,会出现类似:error C2664: CxImage:Save : cannot convert parameter 1 from const char * to const TCHAR *的错误)。首先编译jasper、jbig、jpeg、libdcr、libpsd、mng、png、tiff、zlib这9个库,然后编译cximage,cximagecrtdll,再接着编译cximagemfcdll。在编译cximagemfcdll之前,先修改其属性,linker-input-Additional Dependencies,将$(OutDir)png.lib等改为././Debug/png.lib(././Release/png.lib),最后编译demo、demodll;全部编译完后即可生成相应的静态库和动态库。注:编译cximagecrtdll可能会出现下面错误1:1LIBCMT.lib(invarg.obj) : error LNK2005: _invalid_parameter already defined in MSVCRTD.lib(MSVCR100D.dll)1LIBCMT.lib(lseek.obj) : error LNK2005: _lseek already defined in MSVCRTD.lib(MSVCR100D.dll)1LIBCMT.lib(dosmap.obj) : error LNK2005: _errno already defined in MSVCRTD.lib(MSVCR100D.dll)1LIBCMT.lib(crt0dat.obj) : error LNK2005: _initterm_e already defined in MSVCRTD.lib(MSVCR100D.dll)1LIBCMT.lib(crt0dat.obj) : error LNK2005: _exit already defined in MSVCRTD.lib(MSVCR100D.dll)1LIBCMT.lib(crt0dat.obj) : error LNK2005: _amsg_exit already defined in MSVCRTD.lib(MSVCR100D.dll)1LIBCMT.lib(tidtable.obj) : error LNK2005: _encoded_null already defined in MSVCRTD.lib(MSVCR100D.dll)1LIBCMT.lib(mlock.obj) : error LNK2005: _unlock already defined in MSVCRTD.lib(MSVCR100D.dll)1LIBCMT.lib(mlock.obj) : error LNK2005: _lock already defined in MSVCRTD.lib(MSVCR100D.dll)1LIBCMT.lib(hooks.obj) : error LNK2005: void _cdecl terminate(void) (?terminateYAXXZ) already defined in MSVCRTD.lib(MSVCR100D.dll)1LIBCMT.lib(crt0init.obj) : error LNK2005: _xi_a already defined in MSVCRTD.lib(cinitexe.obj)1LIBCMT.lib(crt0init.obj) : error LNK2005: _xi_z already defined in MSVCRTD.lib(cinitexe.obj)1LIBCMT.lib(crt0init.obj) : error LNK2005: _xc_a already defined in MSVCRTD.lib(cinitexe.obj)1LIBCMT.lib(crt0init.obj) : error LNK2005: _xc_z already defined in MSVCRTD.lib(cinitexe.obj)处理方法:打开属性配置页(右击 项目名单击Properties)Configuration Properties目录下Linker中的Input中Ignore Specific Default Libraries添加库libcmt.lib。编译cximagemfcdll可能出现的错误2:找不到png.lib处理方法:在项目属性中正确添加库所在文件路径:.Debug,并将需要的库添加到附加依赖项Additional Dependencies中。值得一提的是,我遇到的无法打开lib或者无法解析函数问题均是通过更改链接输入的附加依赖项解决的(有时候需要切换属性-配置属性-常规-字符集)。l 编译运行demo1 先将demo设置为启动项目(方法见后文)。如果直接运行,会出现以下错误:1 stdafx.cpp1d:program files (x86)microsoft visual studio 10.0vcatlmfcincludeafxver_.h(81): fatal error C1189: #error : Please use the /MD switch for _AFXDLL builds设置如下:2 此项目是静态链接,需要的是cimage目录下的众多头文件和众多lib库,前者在属性-配置属性-CC+-附加包含目录或属性-配置属性-包含目录中添加头文件所在的目录;后者在属性-配置属性-链接器-输入-附加依赖项中添加lib各个文件项目。注意的是cpp文件是不需要的,可以将cimage目录下的众多头文件拷到项目的某个目录中。3 编译运行时出现了两个问题,一个是lib的问题,将lib的路径同样按照上面的方式重新配置了以后(注意相对路径是针对某个项目的)4 接着出现了无法打开exe的问题,没办法,将属性-配置属性-常规中的输出目录和目标文件名给改了,我的是改成了$(SolutionDir)bin和demod,也就是和链接器-常规中的输出文件弄成一致的,开始并不一致,这个很奇怪。错误1:1cximage.lib(ximadsp.obj) : error LNK2019: unresolved external symbol void _cdecl std:_Debug_message(wchar_t const *,wchar_t const *,unsigned int) (?_Debug_messagestdYAXPB_W0IZ) referenced in function public: void _thiscall std:dequestruct tagPOINT,class std:allocator :pop_front(void) (?pop_front?$dequeUtagPOINTV?$allocatorUtagPOINTstdstdQAEXXZ)1cximage.lib(ximadsp.obj) : error LNK2019: unresolved external symbol public: _thiscall std:_Lockit:_Lockit(void) (?1_LockitstdQAEXZ) referenced in function public: void _thiscall std:_Container_base12:_Orphan_all(void) (?_Orphan_all_Container_base12stdQAEXXZ)1cximage.lib(ximadsp.obj) : error LNK2019: unresolved external symbol public: _thiscall std:_Lockit:_Lockit(int) (?0_LockitstdQAEHZ) referenced in function public: void _thiscall std:_Container_base12:_Orphan_all(void) (?_Orphan_all_Container_base12stdQAEXXZ)1cximage.lib(ximadsp.obj) : error LNK2019: unresolved external symbol void _cdecl std:_Xlength_error(char const *) (?_Xlength_errorstdYAXPBDZ) referenced in function protected: void _thiscall std:dequestruct tagPOINT,class std:allocator :_Xlen(void)const (?_Xlen?$dequeUtagPOINTV?$allocatorUtagPOINTstdstdIBEXXZ)处理方法打开属性配置页(右击 项目名单击Properties)Configuration Properties目录下Linker中的Input中Additional Dependencies添加库libcpmtd.lib。l 编译运行demodll1 此项目使用的动态链接,只需要cximage目录下的众多头文件,cximagecrtd.lib和cximagecrtd.dll(生成自项目cximagecrtdll)或cximaged.lib和cximaged.dll(生成自项目cximagemfcdll),头文件与lib文件的配置方式也与上面demo的一致。这次lib的依赖路径没有修改,原来的是一致的,当然的不一致的也需要修改。同样出现了无法打开exe文件的问题,同上面的方式,将输出目录和目标文件名给改了,我的是改成了$(SolutionDir)bin和demoddlll 示例 1 新建一个控制台工程toJPEG(将png、bmp以及非标准格式的jpg格式的图片转为标准的jpg格式),将Character Set设为Use Multi-Byte Character Set。2 从CxImage文件(.CxImage)中复制下列文件到工程目录:xfile.h、ximacfg.h、ximadef.h、ximage.h、xiofile.h、xmemfile.h3 从CxImage文件(.Debug)中复制下列文件到工程目录lib文件夹下:png.lib、jpeg.lib、zlib.lib、cximage.lib注:因为没有用到所有的库,所以在编译cximage.lib之前,需要在配置的头文件ximcfg.h中找到一些编译开关来关闭一些图像库。4 添加lib方法一:直接在附加依赖项中添加;方法二:写在文件中5 必需添加头文件ximage.h,代码如下:l 参考文献1. CxImage的编译及简单使用举例:/fengbingchun/article/details/387957132. CxImage702在VS2010上的配置记录:/CSharp_fei/article/details/244863973. CxImag

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论