【转】CxImage的简单用法

CXImage库在图片处理中的应用教程 CXImage是一个功能强大的C++图像处理库,它为开发者提供了操作和处理各种图像格式的能力。CXImage支持常见的位图图像格式,例如JPEG、PNG、BMP以及GIF等,并支持图像的基本处理,如格式转换、尺寸调整、图像旋转等。CXImage是一个功能强大的C++图像处理库,提供了广泛的接口,允许开发者加载、显示、保存图像文件,并应用各种图像处理效果。本节将详细介绍CXImage核心API的使用方法,为读者打造一个坚实的图像处理基础。 阅读详情

好了,我来说明一下这个CxImage类的简单用法,希望给刚接触CxImage的朋友带来一些帮助,首先我要说明的是在这里我以CxImage 6.0.0.0版为例(各个版本可有能所不同)。官方下载地址是:http://www.xdp.it/cximage/

 

打开工程后可以看到下例这些工程:

- CxImage

- CxImageCrtDll

- CxImageMfcDll

- dome

- domeDll

- jasper

- jbig

- jpeg

- libdcr

- mng

- png

- tiff

- zlib

 

1。首先我们要确定在程序中是希望静态链接还是动态链接,在这里我建议大家使用动态链接,因为这个库有点大,如果使用静态链接的话你的应用程序体积会额外增加1MB多。

 

2。然后确定在MFC中使用还是在CRT环境中使用,这个库专门为你建了这两个工程来创建不同环境中使用的运行时库,跟据你的需求来选择编译CxImageCrtDll还是CxImageMfcDll工程,如果你希望使用静态库链接的话除了这两个工程不需要编译其它的工程都需要编译。并且在引用这个静态库的时候要把这些所有编译过的工程里的*.lib全部拷到你的程里去。

 

3。OK编译完工程后将以下文件拷到你建立的工程里去

先将头文件拷到你的工程里去:

xfile.h、ximacfg.h、ximadef.h、ximage.h、xiofile.h、xmemfile.h

 

使用静态链接需要拷以下文件:

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

 

如用动态链接需要拷以下文件:

cximage.lib、cximage.dll

 

4。在你的工程里引用这个库#include "ximage.h"、#pragma comment(lib, "cximage.lib")如果是静态链接拷过来的那些*.lib文件全部要引用进去否则无法链接,在这里有人可能会问既然只包含了"ximage.h"这一个头文件为什么要拷那么多头文件过来呢?这是因为"ximage.h"这个头文件依赖那几个头文件所以必须拷过来。

 

5。现在你就可以使用这个CxImage库了,那我们来加载一幅图片然后将它显示出来吧:

      CxImage  image; // 定义一个CxImage对象

 

      image.Load("Ooopsy.png", CXIMAGE_FORMAT_PNG); // 加载一幅png图片

 

      // 在OnPaint消息里显示出来

      image.Draw(dc.GetSafeHdc(), 0, 0);

 

     以上只介绍最简单的用法,至于基它的功能你就自已尝试,我就不多说了,要是我一下子说完了CxImage开发者就不需要写文档说明了,在它的跟目录下有一个index.htm这就是它的文档起始页,如果你需要的话就自已去看吧!

 

 

 

具体应用技巧

1、打开一张图
可以通过创建一个新的CxImage对象来完成,通过构造函数来打开一张图
CxImage::CxImage(const char * filename, DWORD imagetype)
其中filename是需要打开的文件路径,imagetype是文件类型,支持的类型有:
CXIMAGE_FORMAT_UNKNOWN,CXIMAGE_FORMAT_BMP,CXIMAGE_FORMAT_GIF,CXIMAGE_FORMAT_JPG,CXIMAGE_FORMAT_PNG,CXIMAGE_FORMAT_MNG,CXIMAGE_FORMAT_ICO,CXIMAGE_FORMAT_TIF,CXIMAGE_FORMAT_TGA,CXIMAGE_FORMAT_PCX,CXIMAGE_FORMAT_WBMP,CXIMAGE_FORMAT_WMF,CXIMAGE_FORMAT_J2K,CXIMAGE_FORMAT_JBG,CXIMAGE_FORMAT_JP2,CXIMAGE_FORMAT_JPC,CXIMAGE_FORMAT_PGX,CXIMAGE_FORMAT_PNM,CXIMAGE_FORMAT_RAS,
当然,这么多格式很难记住,我们可以通过如下函数来直接获得文件的格式。
int FindType(const CString& filename)
{
 CString ext = filename.Right(filename.GetLength()-filename.ReverseFind('.')-1);
 int type = 0;
 if (ext == "bmp")     type = CXIMAGE_FORMAT_BMP;
#if CXIMAGE_SUPPORT_JPG
 else if (ext=="jpg"||ext=="jpeg") type = CXIMAGE_FORMAT_JPG;
#endif
#if CXIMAGE_SUPPORT_GIF
 else if (ext == "gif")    type = CXIMAGE_FORMAT_GIF;
#endif
#if CXIMAGE_SUPPORT_PNG
 else if (ext == "png")    type = CXIMAGE_FORMAT_PNG;
#endif
#if CXIMAGE_SUPPORT_MNG
 else if (ext=="mng"||ext=="jng") type = CXIMAGE_FORMAT_MNG;
#endif
#if CXIMAGE_SUPPORT_ICO
 else if (ext == "ico")    type = CXIMAGE_FORMAT_ICO;
#endif
#if CXIMAGE_SUPPORT_TIF
 else if (ext=="tiff"||ext=="tif") type = CXIMAGE_FORMAT_TIF;
#endif
#if CXIMAGE_SUPPORT_TGA
 else if (ext=="tga")    type = CXIMAGE_FORMAT_TGA;
#endif
#if CXIMAGE_SUPPORT_PCX
 else if (ext=="pcx")    type = CXIMAGE_FORMAT_PCX;
#endif
#if CXIMAGE_SUPPORT_WBMP
 else if (ext=="wbmp")    type = CXIMAGE_FORMAT_WBMP;
#endif
#if CXIMAGE_SUPPORT_WMF
 else if (ext=="wmf"||ext=="emf") type = CXIMAGE_FORMAT_WMF;
#endif
#if CXIMAGE_SUPPORT_J2K
 else if (ext=="j2k"||ext=="jp2") type = CXIMAGE_FORMAT_J2K;
#endif
#if CXIMAGE_SUPPORT_JBG
 else if (ext=="jbg")    type = CXIMAGE_FORMAT_JBG;
#endif
#if CXIMAGE_SUPPORT_JP2
 else if (ext=="jp2"||ext=="j2k") type = CXIMAGE_FORMAT_JP2;
#endif
#if CXIMAGE_SUPPORT_JPC
 else if (ext=="jpc"||ext=="j2c") type = CXIMAGE_FORMAT_JPC;
#endif
#if CXIMAGE_SUPPORT_PGX
 else if (ext=="pgx")    type = CXIMAGE_FORMAT_PGX;
#endif
#if CXIMAGE_SUPPORT_RAS
 else if (ext=="ras")    type = CXIMAGE_FORMAT_RAS;
#endif
#if CXIMAGE_SUPPORT_PNM
 else if (ext=="pnm"||ext=="pgm"||ext=="ppm") type = CXIMAGE_FORMAT_PNM;
#endif
 else type = CXIMAGE_FORMAT_UNKNOWN;
 
 return type;
}

2、保存一张图
bool CxImage::Save(LPCWSTR filename, DWORD imagetype=0)
参数和上面是一样的。
3、得到图形数据,以便在OpenGL中使用材质
 BYTE* CxImage::GetBits(DWORD row = 0);
4、得到图形大小
long GetSize();
5、得到图形高度和宽度
 DWORD CxImage::GetHeight();
 DWORD CxImage::GetWidth();
6、得到文件类型
 DWORD CxImage::GetType()  const;
7、得到最后一个错误
 char* CxImage::GetLastError();
8、在界面中绘制出来
long CxImage::Draw(HDC hdc, const RECT& rect, RECT* pClipRect=NULL)
HDC 绘图设备,rect 绘图的区域,确定绘图的左上角和右下角坐标。pClipRect,裁剪区域,一般可以和绘图区域一样大小,除非特殊需要。

 

 

 

 

 

 

 

 

在VS2005里面, for循环体里面定义 只在循环体内有效,所以会出现一些i 没有定义的问题


然后把所有生成的Lib最好都放到一个文件夹下,方便使用

我是放到

E:/lib/release
E:/lib/debug

这是官方的帮助对在自己的工程中使用CxImage类库的说明:

Project Settings
|- C/C++
|  |- Code Generation
|  |  |- Use run-time library : Multithreaded DLL (must be the same for
|  |  | all the linked libraries)
|  |  |- Struct member alignment : must be the same for all the linked
|  |  | libraries
|  |- Precompiled headers : not using precompiled headers
|  |- Preprocessor
|      |- Additional Include Directories: ../cximage
|- Link
    |- General
        |- Object/library modules: ../png/Debug/png.lib
                                  ../raw/Debug/libdcr.lib
                                  ../jpeg/Debug/jpeg.lib
                                  ../zlib/Debug/zlib.lib
                                  ../tiff/Debug/tiff.lib
                                  ../jasper/Debug/jasper.lib
                                  ../cximage/Debug/cximage.lib ...
                                 
                                 
首先:

选项->工具->项目和解决方案->VC++目录

库文件: 增加 :  E:/lib/release  E:/lib/debug

包含文件: 增加: (your CxImage dir)/CxImage


然后在你的工程中:

项目->属性->配置属性->链接器->输入->附加依赖项 : 增加:

cximage.lib jpeg.lib png.lib tiff.lib j2k.lib jasper.lib jbig.lib zlib.lib

在 项目->属性->配置属性->常规

MFC使用: 在共享DLL中使用MFC

字符集: 使用多字节字符集

在项目->属性->配置属性->C/C++->代码生成

运行时库 : /MD
结构成员对齐: 16字节

预编译头:不使用预编译头

OK,这样子,就可以开始使用CxImage啦

Cximage C++下的图像处理库文件,支持bmp,png,jpeg等多种格式 C++下的 图像处理库文件,支持bmp,png,jpeg等多种格式 C++下的图像处理库文件,支持bmp,png,jpeg等多种格式 立即下载

相关推荐

群晖Docker安装GitLab

external_url ‘http://lanweixia.synology.me’ 这种情况访问页面的时候加上端口没问题,但是会导致http的克隆地址没有端口。external_url ‘http://lanweixia.synology.me:8000’ 加端口的话,又会导致页面访问不了,Gitlab也一直处于启动状态。​ 完成以后修改docke—>gitlab—>config---->gitlab.rb。就是上面改的端口(docker的端口)首次进入,会设置密码,这个密码就是用户名。

Lim的博客 9098

CxImage的简单用法

好了,我来说明一下这个CxImage类的简单用法,希望给刚接触CxImage的朋友带来一些帮助,首先我要说明的是在这里我以CxImage 6.0.0.0版为例(各个版本可有能所不同)。官方下载地址是:http://www.xdp.it/cximage/   打开工程后可以看到下例这些工程: - CxImage - CxImageCrtDll - CxImageMfcDll - dome...

weixin_33725270的博客 150

Cadence安装

选择刚刚解压的E盘DVD驱动中的setup.exe文件,安装路径推荐D盘,此处会自己给你新建文件夹,我们无需手动建文件夹。但是,新产品有一些BUG(影响使用流畅性),所以我们要对17.4打补丁,补丁包同样去吴川斌的博客下载。下载阿狸狗破戒大师 我这边下载的是版本V3.2.6,同样在吴川斌的博客下载安装包,链接同上。记录一下安装过程,方便以后安装使用Cadence。破解完成后,建议将这两个软件创建快捷方式到桌面。到这里,我们已经可以正常的使用Cadence了。对光盘映像文件解压后双击,可以在我的电脑看到。

电子那些事儿 1万+

CxImage给图片加水印文字

void CTest2Dlg::OnBtnAddWord()  {  // TODO: Add your control notification handler code here  CxImage imagesy;    if( !imagesy.Load("C:\\z2.jpg", CXIMAGE_FORMAT_JPG))  {    return ;  }  if (ima

tianyu的专栏 - Linux site:blog.youkuaiyun.com/wishfly 2847

UE4游戏开发:GameInstance与GameMode的实战应用与避坑指南

本文深入解析了UE4中GameInstance与GameMode的核心差异与实战应用。GameInstance作为贯穿游戏进程的全局单例,负责跨关卡数据持久化与系统管理;而GameMode则定义特定关卡内的游戏规则与逻辑,随关卡加载销毁。文章通过数据存储、动态模式切换及网络游戏等场景,提供了清晰的应用指南与常见避坑方案,帮助开发者构建更健壮的UE4游戏架构。

kubernetes8ctl的博客 230

Diffix3D+复现

上下载模型,将其放在一个目录中,并将目录名填在demo代码中from_pretrained的cache_dir参数里。目录结构应该是"<PATH>/nvidia/difix/…给的requirements文件中pytorch和xformers的版本没有指定,这里测试过以下版本,可以成功运行。将readme中的demo代码新建一个python脚本复制进去,然后将脚本放在src目录中运行。如果遇到网络问题无法加载huggingface上的预训练模型,可以手动从。如果出现,以下错误重新。

NeverMakeIt的博客 1085

CxImage 使用范例

范例1,2.。。+ 补充说明。 范例1:读取图像文件 从硬盘 #include "ximage.h" #pragma comment(lib, "cximage.lib") CxImage image; image.Load(_T("baboon.jpg"), CXIMAGE_SUPPORT_JPG); if(image.IsValid()) { //image.Gr

路楷的专栏 855

11. TI MSPM0G3507 DMA传输实战:ADC数据自动搬运与电压采集

本文以TI MSPM0G3507为例,详细讲解了如何利用DMA(直接存储器访问)实现ADC数据的自动搬运与电压采集。通过实战演示,解放CPU资源,提升系统实时性与效率,适用于电赛备赛及嵌入式开发中的数据采集场景。

weixin_42465140的博客 130

CxImage的编译及简单使用举例

1、  从http://sourceforge.net/projects/cximage/下载最新的CxImage 702源码; 2、  解压缩后,以管理员身份打开CxImageFull_vc10.sln工程,在编译之前先将每个工程属性的Character Set由原先的Use Unicode Character Set改为Use Multi-ByteCharacter Set,首先编译ja

qing666888的专栏 1445

【NVIDIA-GB200-1】国内第一份生产环境实战安装配置教程,配置安装脚本,nvidia gb200配置教程-复制即用;gb200驱动安装

GB200 的高性能通信依赖。

jundao1997的专栏 704

Pytorch实现EdgeCNN(基于PyTorch实现)

本专栏整理了《图神经网络代码实战》,内包含了不同图神经网络的相关代码实现(PyG以及自实现),理论与实践相结合,如GCN、GAT、GraphSAGE等经典图网络,每一个代码实例都附带有完整的代码。

优快云 精品推荐 1万+

JNI编译cximage库(附android.mk和application.mk文件及详细步骤)

我们知道cximage是一个非常强大的C++图片库,其依赖于jasper库,png库,jpeg库还有其他的几种库,因我们项目中只用到了这三个库,所以我只使用jni编译这三种库。 先讲一下jni编译成动态so库的几种方式。 1.使用android studio提供的ndk-build编译的方式。 2.使用linux的交叉编译器gcc编译方式。 3.使用tool-chain工具链进行编译。 4

刘旭 1293

VMware如何安装img镜像,VMware如何安装openwrt软路由(含相关工具镜像)

VMware如何安装img镜像,VMware如何安装openwrt软路由(含相关工具镜像)

XiaoqiangClub的博客 4003

CxImage 用法 (转 的 )

CxImage是C++实现的功能强大的、能处理多种文件格式的图像管理类。它能够简单快速的实现图像的导入、保存、显示和变换。 为什么使用CxImage u 它是平台无关的 u 它是自由软件、免费的、开源的 u 支持多种平面格式:BMP、GIF、ICO、TGA、JPEG、PCX、PNG、TIFF、MNG、RAS等,还有更多! u 功能强大:几何变换、图像处理、图像格式转换

518

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【转】CxImage图像库的使用

CxImage下载地址:http://www.codeproject.com/KB/graphics/cximage/cximage600_full.zip 作者:Davide Pizzolato CxImage简介 CxImage 是一个可以简便而快速地打开、保存、显示和转换图像文件的 C++类库,它可以用于MFC,可以打开,保存,显示,转换各种常见格式的图像文...

diju7500的博客 404

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

CxImage 图像显示及处理类CxImage (转)对mng图像支持!

http://blog.csdn.net/c0ffee1982/article/details/1892035 CxImage 是一个C++类,可以加载、保存、显示,转换BMP, JPEG, GIF, PNG, TIFF, MNG, ICO, PCX, TGA, WMF, WBMP, JBG, J2K 等格式图像

tzmyf234的专栏 608

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【转】OpenCV与CxImage转换(IplImage)、IplImage QImage Mat 格式互转

最近由于在项目中用到了Opencv库,但是为了更好的显示图像还是使用了Cximage库,它可以快捷地存取、显示、转换各种图像。Opencv库用于高级图像处理与识别。为了使Cximage图像与Opencv图像交互,写了个Cximage转换到IplImage的类。 OpenCV2CXimage.h #pragma once /* * 类说明:OpenCV图像与CXimag...

diju7500的博客 269

[转]cximage双缓冲绘图 .

1、起因 本来是想用gdi绘图的,但是一想到用gdi+libpng,还要自己处理一些比如alpha的效果之类的巨麻烦(而且涉及到处理每一个像素点的计算,一般都很耗时),我对自己处理像素点的能力一直持有怀疑态度。。so,先用cximage将就着,不知道是否可以跨平台。。 2、用cximage绘制png到屏幕上面确实很容易,简单的就几行代码 参考:http://blog.csdn.net/...

weixin_30511107的博客 163

十全大补:CxImage图像处理类库(转)

十全大补:CxImage图像处理类库                                                                                                                                   转载IT168         CxImage是一个可以用于MFC 的C++图像处理类库类

code09的专栏 3481

[转]CxImage使用指南

帮助地址:http://www.xdp.it/cximage/ ---------------------------------------------------- 1、Load:reads from disk the image in a specific format; 2、Save:saves to disk the image in a specific format; ...

weixin_30715523的博客 240

【转】VC++中的图像类型转换--使用开源CxImage类库

一。CxImage类库简介这只是翻译了CxImage开源项目主页上的部分简介及简单使用。CxImage类库是一个优秀的图像操作类库。它可以快捷地存取、显示、转换各种图像。有的读者可能说,有那么多优秀的图形库,如OpenIL,FreeImage,PaintLib等等,它们可谓是功能强大,齐全,没必要用其它的类库。但我要说,这些类库基本上没有免费的,使用这些类库,你要被这样那样的许可协议所束缚

code09的专栏 1072

四大图像库:OpenCV/FreeImage/CImg/CxImage(转)

 1.对OpenCV 的印象:功能十分的强大,而且支持目前先进的图像处理技术,体系十分完善,操作手册很详细,手册首先给大家补计算机视觉的知识,几乎涵盖了近10年内的主流算法;然后将图像格式和矩阵运算,然后将各个算法的实现函数。我用它来做了一个Harris角点检测器和Canny边缘检测器,总共就花了一个小时(第一次用OpenCV)。而且该库显示图像极其方便,两句话就可以。但该库似乎不大稳定,

深海狂鲨 2312

【转】交叉编译-4:CxImage开源库在VS2013的编译和使用

【转】交叉编译-4:CxImage开源库在VS2013的编译和使用 如果x64的话 是…/…/x64/Debug/png.lib 而不是将$(OutDir)png.lib等改为…/…/Debug/png.lib。

Tracer的博客 247

CxImage

CxImage是C++实现的功能强大的、能处理多种文件格式的图像管理类。它能够简单快速的实现图像的导入、保存、显示和变换。 为什么使用CxImage u 它是平台无关的 u 它是自由软件、免费的、开源的 u 支持多种平面格式:BMP、GIF、ICO、TGA、JPEG、PCX、PNG、TIFF、MNG、RAS等,还有更多! u 功能强大:几何变换、图像处理、图像格式转换等。

evsqiezi 1133
上一篇: 【转】VC++中的图像类型转换--使用开源CxImage类库
下一篇: 如何解决VS中“找不到MSVCR80.dll”的问题
code09
博客等级 码龄18年 31粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值