本程序下载地址:

  上一篇讲述了tiff格式图片拆分成多张图片, 这篇博客讲述如何把多张任意格式的图片合成为一张图片。

  图像合成仍然需要借助Cximage图像库,合成函数为Mixfrom, 函数原型为:

void MixFrom(CxImage & imagesrc, long lXOffset, long lYOffset);

  其中imagesrc表示原图, lXOffset,lYOffset表示原图需要被合成到目标图像的哪个位置。

 例如:

    //合成图片
ImageDes.MixFrom(ImageSrc1, , );
ImageDes.MixFrom(ImageSrc2, nSrc1Width, ); //保存合成图片
ImageDes.Save("D:\\Compoud.jpg", CXIMAGE_FORMAT_JPG);

在这个例子中,把原图1合成到目标图片的左边,把原图2合成到目标图片的右边,合成后的图片保存到D盘,合成后的效果图如下:

下面是这个程序的完整代码:
 //图像合成响应函数
void CMyDlg::OnBtnMinfrom()
{
// TODO: Add your control notification handler code here
CxImage ImageDes;
CxImage ImageSrc1;
CxImage ImageSrc2; //原图1宽高
int nSrc1Width = ;
int nSrc1High = ; //原图2宽高
int nSrc2Width = ;
int nSrc2High = ; //合成后的图片宽高
int nDesWidth = ;
int nDesHigh = ; //加载图片1图片2
ImageSrc1.Load("D:\\001.jpg");
ImageSrc2.Load("D:\\002.jpg"); //图片1宽高
nSrc1Width = ImageSrc1.GetWidth();
nSrc1High = ImageSrc1.GetHeight(); //图片2宽高
nSrc2Width = ImageSrc2.GetWidth();
nSrc2High = ImageSrc2.GetHeight(); //合成后的图片宽
nDesWidth = nSrc1Width + nSrc2Width; //合成后的图片高(水平合成,所以宽为图片1和图片2之和, 高为图1和图2的最大者)
if(nSrc1High < nSrc2High)
{
nDesHigh = nSrc2High;
}
else
{
nDesHigh = nSrc1High;
} //合成后图片的位数,通常为24位
int nBppCnt = ImageSrc1.GetBpp(); //创建一个合成图片后的大小
ImageDes.Create(nDesWidth, nDesHigh, nBppCnt); //合成图片
ImageDes.MixFrom(ImageSrc1, , );
ImageDes.MixFrom(ImageSrc2, nSrc1Width, ); //保存合成图片
ImageDes.Save("D:\\Compoud.jpg", CXIMAGE_FORMAT_JPG); }

vc图像合成的更多相关文章

  1. Windows 常用运行库下载 (DirectX、VC++、.Net Framework等)

    经常听到有朋友抱怨他的电脑运行软件或者游戏时提示缺少什么 d3dx9_xx.dll 或 msvcp71.dll.msvcr71.dll又或者是 .Net Framework 初始化之类的错误而无法正常 ...

  2. VS15 preview 5打开文件夹自动生成slnx.VC.db SQLite库疑惑?求解答

    用VS15 preview 5打开文件夹(详情查看博客http://www.cnblogs.com/zsy/p/5962242.html中配置),文件夹下多一个slnx.VC.db文件,如下图: 本文 ...

  3. VC程序获取管理员权限

    一: 编译程序的时候设置一下 在项目属性--连接器--清单文件--UAC执行级别改为requireAdministrator 二: void GainAdminPrivileges(CString s ...

  4. 目标电脑未安装VC++6.0或者VS,运行APP丢失DLL问题解决办法

    一.背景 VS或者VC++6.0编译出来的程序需要在未安装VS/VC++6.0的电脑上跑,很大情况会出现MSVCRXXX.dll 或者其他DLL丢失的情形,本篇就DLL相关问题做个记录. 二.正文 1 ...

  5. 6 VC维

    1 VC维的定义 VC维其实就是第一个break point的之前的样本容量.标准定义是:对一个假设空间,如果存在N个样本能够被假设空间中的h按所有可能的2的N次方种形式分开,则称该假设空间能够把N个 ...

  6. VC++6.0 Win32 C2065:SM_XVIRTUALSCREEN

    百度了了一大堆,都说让重装vc++6.0,然而并没有什么卵用. 解决办法:找到你的vc6.0安装路径下的WINDOWS.H,将0x0400改为0x0500 Window各个版本对应的宏值WINVER:

  7. 【VC++技术杂谈004】使用微软TTS语音引擎实现文本朗读

    本文主要介绍如何使用微软TTS语音引擎实现文本朗读,以及生成wav格式的声音文件. 1.语音引擎及语音库的安装 TTS(Text-To-Speech)是指文本语音的简称,即通过TTS引擎把文本转化为语 ...

  8. vc下打印透明背景图片

    一.前言 刚接到个任务,要把带有透明背景的章子图片打印出来,开始觉得不是很简单吗,直接用vc自动生成的打印功能不就ok了.不过问题却不是想像的那么简单! 二.窗口中显示透明图片 在窗口中显示图片,可以 ...

  9. VC++6.0文件关联问题的解决方法

    最近我的电脑*.c文件关联失败,无法实现双击*.c打开vc++6.0,感觉特别不爽. 在经过自己的琢磨研究后,终于找到了解决方法. 特此分享下,希望可以帮到遇到同样问题的你. 核心内容: 1.& ...

随机推荐

  1. ado.net的简单数据库操作(一)

    摘要:接下来的几篇博客将要讲到如何使用ado.net实现简单的数据库操作,包括增删改等内容.首先会介绍基础的数据库操作,然后以一个实例来进行讲解,这个实例会把一个数据表读取到winform上,然后在w ...

  2. JQuery官方学习资料(译):Data方法

        你可能经常会想需要通过元素来存储一些数据.在JavaScript中你可能需要给元素添加属性来实现这样的功能,但是在某些浏览器中,你可能还需要处理因此造成的内存泄露问题.JQuery提供了一个简 ...

  3. mysql 随机数 rand使用

    生成随机数 生成0-3的随机数 SELECT RAND() * 最大不会超过3, SELECT FLOOR(RAND() * ) 上面生成整数的值是0,1,2,3生成的随机整数是1,2,3的话,语句如 ...

  4. mathjs,math.js解决js运算精度问题

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 【代码笔记】Web-CSS-CSS Text(文本)

    一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  6. Vue-指令

    1. v-text:这个指令用于将vue实例中的data内的属性渲染到标签内.有两种写法: 1. `<div v-text="数据"></div>`:该写法 ...

  7. AI时代大点兵-国内外知名AI公司2018年最新盘点

    AI时代大点兵-国内外知名AI公司2018年最新盘点 导言 据腾讯研究院统计,截至2017年6月,全球人工智能初创企业共计2617家.美国占据1078家居首,中国以592家企业排名第二,其后分别是英国 ...

  8. Dynamics AX 2012 R2 电子邮件广播错误 0x80040213

    Dynamics AX 2012 R2 电子邮件广播错误 0x80040213 今天Reinhard在新环境做邮件广播测试时,发现无法发送邮件,并报以下错误: 类"CDO.Message&q ...

  9. C#监控指定目录的文件变化的代码

    如下的资料是关于C#监控指定目录的文件变化的代码. FileSystemWatcher watcher = new FileSystemWatcher();watcher.Path = @" ...

  10. 在phpstudy中安装并使用ThinkPHP 5

        最近在慕课网学习 thinkphp,由于教师使用的是 MAC下的 MAMP 环境,而我使用的是 win7 的 phpstudy,区别不大,记录在这里,方便查询.   不同系统集成环境安装: m ...