cximage开源软件应用

搞个 cximage702_full导入VS2010编译后

1.把所有.lib文件和.dll文件拷贝到 新项目的CXIMAGE文件夹里

2.在新项目的stdfx.h或所需要的文件里输入以下引用

#include "CXIMAGE/ximage.h"   
//#pragma comment(lib, "CXIMAGE/cximaged.lib")
//#pragma comment(lib, "CXIMAGE/cximagecrtd.lib")//在静态链接库中使用
#pragma comment(lib, "CXIMAGE/cximage.lib")
#pragma comment(lib, "CXIMAGE/png.lib")
#pragma comment(lib, "CXIMAGE/jpeg.lib")
#pragma comment(lib, "CXIMAGE/zlib.lib")
#pragma comment(lib, "CXIMAGE/tiff.lib")
#pragma comment(lib, "CXIMAGE/jbig.lib")
#pragma comment(lib, "CXIMAGE/jasper.lib")
#pragma comment(lib, "CXIMAGE/mng.lib")
#pragma comment(lib, "CXIMAGE/libdcr.lib")
#pragma comment(lib, "CXIMAGE/libpsd.lib")


3.如果用静态链接库编译或者生成带界面的MFCDLL 运行模式需要"release",

在引用时将MFCDLL生成的DLL和CXIMAGE/cximagecrtd.dll,CXIMAGE/cximaged.dll拷贝到目标工程目录中,

typedef void (*lpFun)(void);         
HINSTANCE hDll;   //DLL句柄  
lpFun pShowDlg; 
hDll = LoadLibrary(L"RegularDLL.dll");
if (NULL==hDll)
{
return ;

pShowDlg = (lpFun)GetProcAddress(hDll,"ShowDlg");
if (NULL==pShowDlg)
{
return ;
}
pShowDlg(); 
FreeLibrary(hDll);

4.测试代码

CxImage image;  
CRect m_rect;
HBITMAP m_bitmap;
#define xishu 0.8


void CkkkDlg::OnBnClickedOk()
{
GetWindowRect(&m_rect);//GetWindowRect(&m_rect); //获得控件客户窗口大小 
image.Load(L"test00111.jpeg", CXIMAGE_FORMAT_JPG); 
if (image.IsValid()) 

//if (m_bitmap) DeleteObject(m_bitmap); 
image.Resample(m_rect.Width()*xishu, m_rect.Height()*xishu); //按照Picture控件的大小,(不按比例)缩放原始图片 
m_bitmap = image.MakeBitmap(m_picture.GetDC()->m_hDC); 
m_picture.SetBitmap(m_bitmap); 
//HBITMAP OldBitmap = m_picture.SetBitmap(m_bitmap); 
//if (OldBitmap) DeleteObject(OldBitmap);  

}

void CkkkDlg::OnBnClickedButton2()//jpeg图片拼接
{
CxImage t_img1,t_img2,t_img3;


int t_h1,t_w1,t_h2,t_w2,t_h3,t_w3,t_bpp;


t_img1.Load(L"test00222.jpeg");


t_img2.Load(L"test00111.jpeg");


t_h1=t_img1.GetHeight();


t_w1=t_img1.GetWidth();


t_h2=t_img2.GetHeight();


t_w2=t_img2.GetWidth();


t_h3=t_h1;


t_w3=t_w1+t_w2;


t_bpp=t_img1.GetBpp();


t_img3.Create(t_w3,t_h3,t_bpp);


t_img3.MixFrom(t_img1,0,0);


t_img3.MixFrom(t_img2,t_w1,0);


t_img3.Save(L"3.jpeg",CXIMAGE_FORMAT_JPG);
}


void  CkkkDlg::zoom(float zoom)
{
int left = m_rect.Width()*xishu*zoom-m_rect.Width()*xishu;
int top = m_rect.Height()*xishu*zoom-m_rect.Height()*xishu;


HDC hdc = m_picture.GetDC()->m_hDC; 
SetStretchBltMode(m_picture.GetDC()->m_hDC,HALFTONE);   
SetStretchBltMode(hdc,HALFTONE);   
StretchBlt(hdc,0,0,m_rect.Width()*xishu,m_rect.Height()*xishu,m_picture.GetDC()->m_hDC,left,top,m_rect.Width()*xishu-2*left, m_rect.Height()*xishu-2*top,SRCCOPY);
必须是缩放啊
}
void CkkkDlg::OnBnClickedButton1()//缩小

zoom(1.1);

void CkkkDlg::OnBnClickedButton3()//放大
{
zoom(0.9); 
}
 
void CkkkDlg::dbclick() //双击鼠标点为中心zoomin
{
CRect rectL,rectR;
CPoint point; 
GetCursorPos( &point ); 
GetDlgItem(IDC_STATIC2)->GetWindowRect(&rectL);//获取控件相对于屏幕的位置


if(rectL.PtInRect(point)) 

/*CString strPos; 
strPos.Format(L"%d:%d", point.x, point.y); 
AfxMessageBox(strPos);*/


//ScreenToClient(rectL);//转化为对话框上的相对位置
int rx,rwith,ry,rheight,halfWith,halfHeight;
halfWith = rectL.right-rectL.left;
halfHeight = rectL.bottom-rectL.top;
/*if(point.x < (rectL.right-rectL.left)/2)
{
rx = rectL.left;
rwith = (point.x-rectL.left)*2; 
}
else
{
rx = rectL.right - (rectL.right-point.x)*2;
rwith = (rectL.right-point.x)*2; 
}
if(point.y < (rectL.bottom-rectL.top)/2)
{
ry = rectL.top;
rheight = (point.y-rectL.top)*2;
}
else{
ry = rectL.bottom - (rectL.bottom-point.y)*2;
rheight = (rectL.bottom-point.y)*2;
}*/
if(point.x < (rectL.right-rectL.left)/2+rectL.left)
{
rx = 0;
rwith = m_rect.Width()*xishu-(halfWith-(point.x-rectL.left)*2); 
}
else
{
rx = halfWith-(rectL.right-point.x)*2;
rwith = m_rect.Width()*xishu-(halfWith-(rectL.right-point.x)*2); 
}
if(point.y < (rectL.bottom-rectL.top)/2+rectL.top)

ry = 0;
rheight = m_rect.Height()*xishu-(halfHeight-(point.y-rectL.top)*2);
}
else{
ry = halfHeight-(rectL.bottom-point.y)*2;
rheight = m_rect.Height()*xishu-(halfHeight-(rectL.bottom-point.y)*2);
}
HDC hdc = m_picture.GetDC()->m_hDC; 
SetStretchBltMode(m_picture.GetDC()->m_hDC,HALFTONE);   
SetStretchBltMode(hdc,HALFTONE);   
StretchBlt(hdc,0,0,m_rect.Width()*xishu,m_rect.Height()*xishu,m_picture.GetDC()->m_hDC,rx,ry,rwith, rheight,SRCCOPY);


 

 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CXImage是一个易于使用的C++图像处理库,可以处理多种格式的图像并提供了许多图像编辑功能。如果想在Linux平台上使用CXImage,首先需要从官方网站或GitHub代码仓库下载代码。然后按照以下步骤进行: 1. 将代码解压缩到您想要存放的目录中。 2. 打开终端并进入该目录。 3. 使用make命令生成库文件。 4. 在生成的lib目录中找到生成的库文件。 5. 使用make install命令将库文件安装到系统目录中。 至此,您就可以开始在Linux平台上使用CXImage库进行图像处理了。您可以在代码中引用生成的库文件,并使用CXImage库提供的各种函数来处理不同格式的图像和编辑图像。此外,CXImage库还提供了许多示例代码,您可以使用它们来进一步了解如何使用该库。 ### 回答2: 在Linux系统下下载CXImage,可以按照以下步骤进行: 1. 打开终端,使用命令行工具。 2. 确保您的系统已经安装了Git和CMake。如果没有安装,可以使用以下命令进行安装: ``` sudo apt-get install git cmake ``` 3. 使用Git命令克隆CXImage的源代码仓库。在终端中运行以下命令: ``` git clone https://github.com/ibnudana/cximage.git ``` 4. 进入克隆下来的CXImage目录: ``` cd cximage ``` 5. 创建一个新的目录,用于构建CXImage的对象文件: ``` mkdir build cd build ``` 6. 运行CMake生成Makefile: ``` cmake .. ``` 7. 运行make命令进行编译: ``` make ``` 8. 完成编译后,在build目录中会生成cximage库文件,可以使用它来进行图像处理等操作。 以上是在Linux系统下下载CXImage的基本步骤。根据实际情况,您可能需要解决一些依赖项或配置问题。请确保您的系统满足CXImage的要求,并参考CXImage的文档进行进一步的配置和安装。 ### 回答3: 在 Linux 系统下下载 cximage 需要执行以下步骤: 1. 打开终端(Terminal),使用以下命令安装 git:sudo apt-get install git 2. 使用以下命令克隆 cximage 仓库:git clone https://github.com/Delgan/cximage.git 3. 进入 cximage 目录:cd cximage 4. 使用以下命令编译 cximage:make 5. 编译完成后,在 cximage 目录中将生成可执行文件 cximage

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值