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# 多张图片合成一张图片的更多相关文章

  1. 使用CSS3中Canvas 实现两张图片合成一张图片【常用于合成二维码图片】

    CSS3 Canvas 实现两张图片合成一张图片 需求 需求:在项目中遇到将一张固定图片和一张二维码图片合成一张新图片,并且用户能够将图片保存下载到本地. 思路:使用 CSS3 中的 Canvas 将 ...

  2. iOS把两张图片合成一张图片

    0x00 步骤 先读取两张图片把创建出CGImageRef 创建上下文画布 把图片依次画在画布指定位置上 从上下文中获得合并后的图片 关闭上下文 释放内存 0x01 代码实现 - (void)comp ...

  3. PHP 两张图片合成一张图片(加水印)

    $dst_im = 'http://www.wangshangyou.com/content/uploadfile/201312/b3241386050881.png'; $src_im = 'htt ...

  4. android开发 两张bitmap图片合成一张图片

    场景:对android4.4解码gif(解码文章见前面一篇)后的图片进行每帧处理,android4.3 解码出来的每帧都很完整,但是到android4.4版本就不完整了,每帧都是在第一帧的基础上把被改 ...

  5. php 合并图片 (将活动背景图片和动态二维码图片合成一张图片)

    <?php //案例一:将活动背景图片和动态二维码图片合成一张图片 //图片一 $path_1 = './background.png'; //图片二 $path_2 = './FU0851_2 ...

  6. java BufferedImage 合成多张图片 - 因为JPEGImageEncoder 不能用

    java BufferedImage 合成多张图片 public void createPicTwo2(int x,int y) {     try     {       //读取第一张图片    ...

  7. 多张图片合成一个tif

    可以利用ACDSEE6.0打开你要合成的多张图片,CTRL全部选中,打开工具--转化文件格式-选择格式tif---所有页----合并---

  8. vue 把后端返回的图片和url链接生成的二维码用canvas 合成一张图片

    H5 页面在做某个活动的时候,有两种分享方式,一种是链接分享,一种是图片分享. 链接分享的话,如果是在微信里,就可引导用户利用微信浏览器自带的分享,根据sdk设置分享标题简介链接缩略图即可. 图片分享 ...

  9. Java 多张图片合成一张 drawImage

      package com.yunfengtech.solution.business; import java.awt.Color; import java.awt.Graphics; import ...

随机推荐

  1. 如何更改linux(centos)下的Apache http端口号

    # vi  /etc/httpd/conf/httpd.conf  文件 修改两个地方     #Listen 12.34.56.78:80     Listen 80     #把80改为你设置的端 ...

  2. Liunx 如何查看80端口被哪个程序所占用

    场景:启服务时一直报80端口被占用 解决方: 1.首先查看下 80 端口的使用情况 netstat -anp|grep 80 查看80端口被被占用的PID 2.根据这个PID 来查看被哪个程序在使用 ...

  3. input文件类型上传,或者作为参数拼接的时候注意的问题!

    1.ajax请求参数如果为文本类型,直接拼接即可.如果为file类型就需要先获取文件信息 2.获取文件信息: HTML代码: <div class="form-group"& ...

  4. tcpdump 抓取MySQL SQL语句脚本

    #!/bin/bash#this script used montor mysql network traffic.echo sqltcpdump -i bond0 -s 0 -l -w - dst ...

  5. English_Rhymes_Phonics_resource

    English_Rhymes_Phonics_resource 1. 英语启蒙早有用吗?_英语启蒙 2. 26个英文字母背后的故事_英语启蒙 3. Phonics Song 4. 学Phonics前先 ...

  6. P1481 魔族密码(LIS变形)

    题目描述(题目链接:https://www.luogu.org/problem/P1481) 风之子刚走进他的考场,就…… 花花:当当当当~~偶是魅力女皇——花花!!^^(华丽出场,礼炮,鲜花) 风之 ...

  7. IdentityServer4专题之二:OpenID介绍

    1.基于概念 OpenId是一个以用户为中心的数字身份识别框架,它具有开放.分散.自由等特性.OpenId的创建是基于这样一个概念:我们可以通过URI(或者URL网址)来识别一个网站.同样,我们也可以 ...

  8. 使用 MYSQLBINLOG 来恢复数据

    使用 MYSQLBINLOG 来恢复数据 2009-04-05 12:47:05 标签:mysql mysqlbinlog 恢复 数据库 数据 原创作品,允许转载,转载时请务必以超链接形式标明文章 原 ...

  9. PHP登陆页面完整代码

      /* 包括的文件 */ /* login.php */ <?phprequire('./mysql.php');$username=$_REQUEST['username'];$passwd ...

  10. POI 2001 Goldmine 线段树 扫描线

    题目链接 http://www.acm.cs.ecnu.edu.cn/problem.php?problemid=1350 http://main.edu.pl/en/archive/oi/8/kop ...