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. java swing简介

    java应用程序用户界面开发包 Swing是一个用于开发Java应用程序用户界面的开发工具包.它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格.Swing开发人员只用很少 ...

  2. css之元素浮动

    什么时候用浮动——块级元素一行显示就使用浮动 浮动的特点——让元素脱标不占位置 什么时候清除浮动——父元素没有设置高度:父元素中所有的子元素都设置浮动 清除浮动的方法(掌握): 1.额外标签清除浮动 ...

  3. 吴裕雄--天生自然JAVAIO操作学习笔记:投票程序

    public class ExecDemo{ public static void main(String args[]){ new Operate() ; } }; import java.io.B ...

  4. 2019 徐州网络赛 G Colorful String 回文树

    题目链接:https://nanti.jisuanke.com/t/41389 The value of a string sss is equal to the number of differen ...

  5. Ubuntu安装docker并修改镜像仓库

    首先切换到root用户 安装docker wget -qO- https://get.docker.com/ | sh 使用docker -v查看docker版本 创建daemon.json 并键入以 ...

  6. JDBC--使用beanutils工具类操作JavaBean

    1.在JavaEE中,Java类的属性通过getter,setter来定义: 2.可使用BeanUtils工具包来操作Java类的属性: --Beanutils是由Apache公司开发,能够方便对Be ...

  7. 「SCOI2005」栅栏

    传送门 Luogu 解题思路 我们有很显然的这样一条贪心思路: 首先满足长度短的木板,因为如果可以满足长的也肯定可以满足短的,而且可能满足更多. 那么我们就会有这样的思路:枚举一条木板由哪条木板切割而 ...

  8. 关于pgsql 几个操作符的效率测试比较

    关于pgsql 几个操作符的效率测试比较1. json::->> 和 ->> 测试方法:单次运行100次,运行10个单次取平均时间.测试结果:->> 效率高 5% ...

  9. 提升Essay写作质量,可从这三个层次入手

    “有针对性”读书对写Essay的产生的帮助是非常大的.由浅显的直接成效,到深度的铺垫积累,阅读一共可分为三个层次: 1读Essay: 2读与写作题材相关的材料: 3多样化阅读. 第一层次:读Essay ...

  10. 【QSBOJ】字符串编辑

    题目链接:https://bbs.csdn.net/topics/390289884?page=1 AC代码: #include<bits/stdc++.h> using namespac ...