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 ...
随机推荐
- Javaweb实现简单的选课系统(主要技术包括jsp、Servlet、Javabean)
一.背景信息: 首先,这个选课系统是上周一老师在课堂上让我们做的测试,考试时长三个小时,我只做了一半,也没有实现选课流程. 由于上周忙于写实验报告没有时间继续完成这个测试.这周用前天和昨天一共七个小时 ...
- 【高软作业2】:Java IDE调研分析
一 序言 随着软件项目开发需求的增多,拥有一款优秀的.顺手的IDE(Integrated Development Environment)对程序员来说显得格外重要.本文就Java程序开发,选择了3款I ...
- bootstrap fileinput控件上传文件大小限制
部分js: language: "zh",//设置语言 showCaption: true,//是否显示标题 showUpload: true, //是否显示上传按钮 showPr ...
- Codeforces #536 A..D 题解
foreword ummm... 开始前几个小时被朋友拉来打了这一场,总体海星,题目体验极佳,很符合口味,稍微有点点简单了不知道是不是因为是 New Year Round,很快就打到了 D,但是题目阅 ...
- k-近邻算法原理入门-机器学习
//2019.08.01下午机器学习算法1——k近邻算法1.k近邻算法是学习机器学习算法最为经典和简单的算法,它是机器学习算法入门最好的算法之一,可以非常好并且快速地理解机器学习的算法的框架与应用.2 ...
- Matplotlib 安装
章节 Matplotlib 安装 Matplotlib 入门 Matplotlib 基本概念 Matplotlib 图形绘制 Matplotlib 多个图形 Matplotlib 其他类型图形 Mat ...
- LR的深入理解资料汇集
今天面试被问到LR的算法的梯度和正则化项,自己不太理解,所以找了一些相关资料,发现LR的算法在梯度下降,正则化和sigmoid函数方面都有很深的研究,期间也发现一些比较好的资料,记录一下. 这篇论文推 ...
- POJ - 1061 青蛙的约会 (扩展欧几里得求同余式)
题意:两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情,既没有问清楚对 ...
- Java笔记--多线程
1.线程的创建与运行(方式一): --1)创建一个Thread的子类: --2)重写Thread类的run()方法: --3)创建一个子类的对象: --4)调用线程的start()方法来启动线程,Ja ...
- 剑指offer圆圈中最后剩下的数字 和 迭代器总结
迭代器只有++ ,--,==,!=四种运算方法,不能将iter = iteration+ 1,因为迭代器是指针类型,1是整数类型,不能直接相加赋值给一个指针. 题目描述 每年六一儿童节,牛客都会准备一 ...