c# 多张图片合成一张图片
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web; namespace ConsoleApp5
{
class Program
{
static void Main(string[] args)
{
CombinImage();
}
/// <summary>
/// 方法一
/// 多张图片的合并
/// </summary>
static private void CombinImage()
{
const string folder = @"F:\测试图片";
Image img1 = Image.FromFile(Path.Combine(folder, "测试1.png"));
Bitmap map1 = new Bitmap(img1);
Image img2 = Image.FromFile(Path.Combine(folder, "测试2.png"));
Bitmap map2 = new Bitmap(img2);
Image img3 = Image.FromFile(Path.Combine(folder, "测试3.png"));
Bitmap map3 = new Bitmap(img3);
var width = Math.Max(img1.Width, img2.Width);
var height = img1.Height + img2.Height + ;
// 初始化画布(最终的拼图画布)并设置宽高
Bitmap bitMap = new Bitmap(width, height);
// 初始化画板
Graphics g1 = Graphics.FromImage(bitMap);
// 将画布涂为白色(底部颜色可自行设置)
g1.FillRectangle(Brushes.White, new Rectangle(, , width, height));
//在x=0,y=0处画上图一
g1.DrawImage(map1, , , img1.Width, img1.Height);
//在x=0,y在图一往下10像素处画上图二
g1.DrawImage(map2, , img1.Height + , img2.Width, img2.Height);
g1.DrawImage(map3, , img1.Height + , img3.Width, img3.Height);
map1.Dispose();
map2.Dispose();
map3.Dispose();
Image img = bitMap;
//保存
img.Save(Path.Combine(folder, "new测试1.png"));
img.Dispose();
} /// <summary>
/// 方法二
///实现左右拼接图片
/// </summary>
/// <param name="Img1"></param>
/// <param name="Img2"></param>
static private void CombinImage2(Image Img1, Image Img2)
{
#if FALSE
//控制台调用
const string folder = @"F:\测试图片";
Image img1 = Image.FromFile(Path.Combine(folder, "测试1.png"));
Image img2 = Image.FromFile(Path.Combine(folder, "测试2.png"));
JoinImage(img1, img2);
#endif
int imgHeight = , imgWidth = ;
imgWidth = Img1.Width + Img2.Width;
imgHeight = Math.Max(Img1.Height, Img2.Height);
Bitmap joinedBitmap = new Bitmap(imgWidth, imgHeight);
Graphics graph = Graphics.FromImage(joinedBitmap);
graph.DrawImage(Img1, , , Img1.Width, Img1.Height);
graph.DrawImage(Img2, Img1.Width, , Img2.Width, Img2.Height);
Image img = joinedBitmap;
//保存
const string folder = @"F:\测试图片";
img.Save(Path.Combine(folder, "new测试2.png"));
img.Dispose();
}
/// <summary>
/// 方法三
/// 调用此函数后使此两种图片合并,类似相册,有个
/// 背景图,中间贴自己的目标图片
/// </summary>
/// <param name="sourceImg">粘贴的源图片</param>
/// <param name="destImg">粘贴的目标图片</param>
static private void CombinImage3()
{
const string folder = @"F:\测试图片";
Image img1 = Image.FromFile(Path.Combine(folder, "测试1.png"));//相框图片
Image img2 = Image.FromFile(Path.Combine(folder, "测试2.png")); //照片图片
//从指定的System.Drawing.Image创建新的System.Drawing.Graphics
Graphics g = Graphics.FromImage(img1);
g.DrawImage(img1, , , , );// g.DrawImage(imgBack, 0, 0, 相框宽, 相框高);
//g.FillRectangle(System.Drawing.Brushes.Black, 16, 16, (int)112 + 2, ((int)73 + 2));//相片四周刷一层黑色边框
//g.DrawImage(img, 照片与相框的左边距, 照片与相框的上边距, 照片宽, 照片高);
g.DrawImage(img2, , , , );
GC.Collect();
img1.Save(Path.Combine(folder, "new测试3.png"));
img1.Dispose();
}
}
}
c# 多张图片合成一张图片的更多相关文章
- 使用CSS3中Canvas 实现两张图片合成一张图片【常用于合成二维码图片】
CSS3 Canvas 实现两张图片合成一张图片 需求 需求:在项目中遇到将一张固定图片和一张二维码图片合成一张新图片,并且用户能够将图片保存下载到本地. 思路:使用 CSS3 中的 Canvas 将 ...
- iOS把两张图片合成一张图片
0x00 步骤 先读取两张图片把创建出CGImageRef 创建上下文画布 把图片依次画在画布指定位置上 从上下文中获得合并后的图片 关闭上下文 释放内存 0x01 代码实现 - (void)comp ...
- PHP 两张图片合成一张图片(加水印)
$dst_im = 'http://www.wangshangyou.com/content/uploadfile/201312/b3241386050881.png'; $src_im = 'htt ...
- android开发 两张bitmap图片合成一张图片
场景:对android4.4解码gif(解码文章见前面一篇)后的图片进行每帧处理,android4.3 解码出来的每帧都很完整,但是到android4.4版本就不完整了,每帧都是在第一帧的基础上把被改 ...
- php 合并图片 (将活动背景图片和动态二维码图片合成一张图片)
<?php //案例一:将活动背景图片和动态二维码图片合成一张图片 //图片一 $path_1 = './background.png'; //图片二 $path_2 = './FU0851_2 ...
- java BufferedImage 合成多张图片 - 因为JPEGImageEncoder 不能用
java BufferedImage 合成多张图片 public void createPicTwo2(int x,int y) { try { //读取第一张图片 ...
- 多张图片合成一个tif
可以利用ACDSEE6.0打开你要合成的多张图片,CTRL全部选中,打开工具--转化文件格式-选择格式tif---所有页----合并---
- vue 把后端返回的图片和url链接生成的二维码用canvas 合成一张图片
H5 页面在做某个活动的时候,有两种分享方式,一种是链接分享,一种是图片分享. 链接分享的话,如果是在微信里,就可引导用户利用微信浏览器自带的分享,根据sdk设置分享标题简介链接缩略图即可. 图片分享 ...
- Java 多张图片合成一张 drawImage
package com.yunfengtech.solution.business; import java.awt.Color; import java.awt.Graphics; import ...
随机推荐
- mysql 获取刚插入行id汇总
mysql 获取刚插入行id汇总 我们在写数据库程序的时候,经常会需要获取某个表中的最大序号数, 一般情况下获取刚插入的数据的id,使用select max(id) from table 是可以的.但 ...
- Spring--@configuration 和 @Bean
参考:http://wiki.jikexueyuan.com/project/spring/java-based-configuration.html @Configuration 和 @Bean 注 ...
- ZB本地设置
(1)web.config <!--本地服务器--> <add name="connectionString" connectionString="mG ...
- 「NOI2009」二叉查找树
传送门 Luogu 解题思路 看一眼题面,显然这是一颗 treap ,考虑到这棵 treap 的中序遍历总是不变的,所以我们就先把所有点按照数据值排序,求出 treap 的中序遍历,然后还可以观察到, ...
- 全面理解Java中的String数据类型
1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. ne ...
- centos6 初次安装成功,未显示eth0网卡的信息
https://www.cnblogs.com/yecao8888/p/6364830.html
- PWM与时间片思想
改编自:http://www.moz8.com/thread-79049-1-1.html 什么是PWM? PWM:脉冲宽度调制,由于在数字电路(或者单片机)输出模拟信号的成本高昂,换句话说,受制于只 ...
- '/'和‘/*’差异造成的No mapping found for HTTP request with URI [/springMVC/welcome.jsp] in DispatcherServlet with name 'springmvc'
在采用springMVC框架的时候所遇到的一个小问题,其中web.xml中关于servlet的配置如下: <servlet> <servlet-name>springmvc&l ...
- Vue - 定义使用组件
import Card from './components/Card.vue' Vue.component('m-card',Card) // component是注册全局组件,在实例化VUE前 ...
- 免杀PHP一句话一枚
免杀PHP一句话shell,利用随机异或免杀D盾,免杀安全狗护卫神等 <?php class VONE { function HALB() { $rlf = 'B' ^ "\x23&q ...