本程序下载地址:

  上一篇讲述了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. mariadb 内存占用优化

    本文由云+社区发表 作者:工程师小熊 摘要:我们在使用mariadb的时候发现有时候不能启动起来,在使用过程中mariadb占用的内存很大,在这里学习下mariadb与内存相关的配置项,对mariad ...

  2. 认识RabbitMQ交换机模型

    前言 RabbitMQ是消息队列中间件(Message Queue Middleware)中一种,工作虽然有用到,但是却没有形成很好的整体包括,主要是一些基础概念的认识,这里通过阅读<Rabbi ...

  3. SSH学习

    简介 SSH或Secure Shell是一种远程管理协议,允许用户通过Internet控制和修改远程服务器.该服务是作为未加密Telnet的安全替代品创建的,它使用加密技术确保与远程服务器之间的所有通 ...

  4. 对配置文件 xml 进行操作

    个人喜欢用 Linq 的方式来进行操作,方便快捷 <?xml version="1.0" encoding="utf-8" ?> <confi ...

  5. C# 爬虫----Cookies处理(Set-Cookie)

    /// <summary> /// Cookie 助手 /// </summary> public class CookieHelper { /// <summary&g ...

  6. [MySQL] 5.7版本以上group by语句报1055错误问题

    1. 在5.7版本以上mysql中使用group by语句进行分组时, 如果select的字段 , 不是完全对应的group by后面的字段 , 有其他字段 , 那么就会报这个错误 ERROR 105 ...

  7. HTML之body标签中的相关标签

    一 字体标签   字体标签包含:h1~h6.<font>.<u>.<b>.<strong><em>.<sup>.<sub& ...

  8. 震惊!Vector两行代码求逆序对,六行代码过普通平衡树

    Vector两行代码求逆序对 背景:济南集训Day7上午T2,出了一道逆序对的裸题,SB的我没看出是逆序对来,于是现场推了一个很刁钻的求逆序对的方法 首先我们想一下冒泡排序的过程,我们不难发现,对于每 ...

  9. 关于Windows系统不会变慢的设想

    记录软件安装的过程,比如创建了哪些服务,哪些计划任务以及启动项等等. 然后软件安装完成后把关于软件的进程,服务,计划任务等都删掉. 然后手动创建一个脚本,用脚本代替软件的启动.比如,如果要启动sqls ...

  10. PJSIP 自动化测试工具安装 Python安装

    Python安装,记录步骤如下 1.下载PythonIDE安装包 到官网 https://repo.continuum.io/archive/下载需要的版本,选择的Anaconda版本3的,当然也可以 ...