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(); } ////// 方法一 /// 多张图片的合并 /// 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 + 10; // 初始化画布(最终的拼图画布)并设置宽高 Bitmap bitMap = new Bitmap(width, height); // 初始化画板 Graphics g1 = Graphics.FromImage(bitMap); // 将画布涂为白色(底部颜色可自行设置) g1.FillRectangle(Brushes.White, new Rectangle(0, 0, width, height)); //在x=0,y=0处画上图一 g1.DrawImage(map1, 0, 0, img1.Width, img1.Height); //在x=0,y在图一往下10像素处画上图二 g1.DrawImage(map2, 0, img1.Height + 10, img2.Width, img2.Height); g1.DrawImage(map3, 0, img1.Height + 10, img3.Width, img3.Height); map1.Dispose(); map2.Dispose(); map3.Dispose(); Image img = bitMap; //保存 img.Save(Path.Combine(folder, "new测试1.png")); img.Dispose(); } ////// 方法二 ///实现左右拼接图片 /// /// /// 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 = 0, imgWidth = 0; 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, 0, 0, Img1.Width, Img1.Height); graph.DrawImage(Img2, Img1.Width, 0, Img2.Width, Img2.Height); Image img = joinedBitmap; //保存 const string folder = @"F:\测试图片"; img.Save(Path.Combine(folder, "new测试2.png")); img.Dispose(); } ////// 方法三 /// 调用此函数后使此两种图片合并,类似相册,有个 /// 背景图,中间贴自己的目标图片 /// /// 粘贴的源图片 /// 粘贴的目标图片 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, 0, 0, 148, 124);// 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, 17, 17, 112, 73); GC.Collect(); img1.Save(Path.Combine(folder, "new测试3.png")); img1.Dispose(); } }}