vc图像合成
上一篇讲述了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图像合成的更多相关文章
- Windows 常用运行库下载 (DirectX、VC++、.Net Framework等)
经常听到有朋友抱怨他的电脑运行软件或者游戏时提示缺少什么 d3dx9_xx.dll 或 msvcp71.dll.msvcr71.dll又或者是 .Net Framework 初始化之类的错误而无法正常 ...
- VS15 preview 5打开文件夹自动生成slnx.VC.db SQLite库疑惑?求解答
用VS15 preview 5打开文件夹(详情查看博客http://www.cnblogs.com/zsy/p/5962242.html中配置),文件夹下多一个slnx.VC.db文件,如下图: 本文 ...
- VC程序获取管理员权限
一: 编译程序的时候设置一下 在项目属性--连接器--清单文件--UAC执行级别改为requireAdministrator 二: void GainAdminPrivileges(CString s ...
- 目标电脑未安装VC++6.0或者VS,运行APP丢失DLL问题解决办法
一.背景 VS或者VC++6.0编译出来的程序需要在未安装VS/VC++6.0的电脑上跑,很大情况会出现MSVCRXXX.dll 或者其他DLL丢失的情形,本篇就DLL相关问题做个记录. 二.正文 1 ...
- 6 VC维
1 VC维的定义 VC维其实就是第一个break point的之前的样本容量.标准定义是:对一个假设空间,如果存在N个样本能够被假设空间中的h按所有可能的2的N次方种形式分开,则称该假设空间能够把N个 ...
- VC++6.0 Win32 C2065:SM_XVIRTUALSCREEN
百度了了一大堆,都说让重装vc++6.0,然而并没有什么卵用. 解决办法:找到你的vc6.0安装路径下的WINDOWS.H,将0x0400改为0x0500 Window各个版本对应的宏值WINVER:
- 【VC++技术杂谈004】使用微软TTS语音引擎实现文本朗读
本文主要介绍如何使用微软TTS语音引擎实现文本朗读,以及生成wav格式的声音文件. 1.语音引擎及语音库的安装 TTS(Text-To-Speech)是指文本语音的简称,即通过TTS引擎把文本转化为语 ...
- vc下打印透明背景图片
一.前言 刚接到个任务,要把带有透明背景的章子图片打印出来,开始觉得不是很简单吗,直接用vc自动生成的打印功能不就ok了.不过问题却不是想像的那么简单! 二.窗口中显示透明图片 在窗口中显示图片,可以 ...
- VC++6.0文件关联问题的解决方法
最近我的电脑*.c文件关联失败,无法实现双击*.c打开vc++6.0,感觉特别不爽. 在经过自己的琢磨研究后,终于找到了解决方法. 特此分享下,希望可以帮到遇到同样问题的你. 核心内容: 1.& ...
随机推荐
- Kubernetes审计日志方案
前言 当前Kubernetes(K8S)已经成为事实上的容器编排标准,大家关注的重点也不再是最新发布的功能.稳定性提升等,正如Kubernetes项目创始人和维护者谈到,Kubernetes已经不再是 ...
- #7 Python代码调试
前言 Python已经学了这么久了,你现在已经长大了,该学会自己调试代码了!相信大家在编写程序过程中会遇到大量的错误信息,我也不例外的啦-遇到这些问题该怎么解决呢?使用最多的方法就是使用print打印 ...
- SSH连接GitHub并配置ssh key
SSH连接GitHub并配置ssh key 配置git的ssh提交,主要需要以下三步: 1.设置Git的user name和email 2.生成ssh 3.配置git 的ssh key 一.设置Git ...
- C#___.net经典题
1 请你说说 .NET 中类和结构的区别? 答:结构和类具有大体的语法,但是结构受到的限制比类要多.结构不能申明有默认的构造函数,为结构的副本是又编译器创建 和销毁的,所以不需要默认的构造函数和 ...
- [PHP] 频率限制类
比如要实现 单个ip限制60秒1次单个关键字,比如手机号,限制60秒1次,3600秒10次 <?php class Sina_Mail_WebAntispam { const PREFIX_WH ...
- C# 操作Excel图形——绘制、读取、隐藏、删除图形
简介 本篇文章将介绍C# 如何处理Excel图形相关的问题,包括以下内容要点: 1.绘制图形 1.1 绘制图形并添加文本到图形 1.2 添加图片到图形 1.3 设置图形阴影效果 1.4 设置图形透明度 ...
- nodejs 搭建简易服务器
www文件夹下 template文件夹下 server.js代码: const express=require('express'); const static=require('express-st ...
- AI时代大点兵-国内外知名AI公司2018年最新盘点
AI时代大点兵-国内外知名AI公司2018年最新盘点 导言 据腾讯研究院统计,截至2017年6月,全球人工智能初创企业共计2617家.美国占据1078家居首,中国以592家企业排名第二,其后分别是英国 ...
- DVWA 黑客攻防演练(八)SQL 注入 SQL Injection
web 程序中离不开数据库,但到今天 SQL注入是一种常见的攻击手段.如今现在一些 orm 框架(Hibernate)或者一些 mapper 框架( iBatis)会对 SQL 有一个更友好的封装,使 ...
- 使用sqlyog或者navicat连接mysql提示1862错误解决
mysql的bin目录下执行 mysqladmin -uroot -p password 依次输入旧密码.新密码.确认新密码 修改后重新使用sqlyog或navicat连接成功 问题解决!