C# 图片的裁剪,两个图片合成一个图片
2024-10-19 13:18:59
图片的裁剪,两个图片合成一个图片(这是从网上摘的)
/// <summary>
/// 图片裁剪,生成新图,保存在同一目录下,名字加_new,格式1.png 新图1_new.png
/// </summary>
/// <param name="picPath">要修改图片完整路径</param>
/// <param name="x">修改起点x坐标</param>
/// <param name="y">修改起点y坐标</param>
/// <param name="width">新图宽度</param>
/// <param name="height">新图高度</param>
public static void caijianpic(String picPath,int x,int y,int width,int height)
{
//图片路径
String oldPath = picPath;
//新图片路径
String newPath = System.IO.Path.GetExtension(oldPath);
//计算新的文件名,在旧文件名后加_new
newPath = oldPath.Substring(0, oldPath.Length - newPath.Length) + "_new" + newPath;
//定义截取矩形
System.Drawing.Rectangle cropArea = new System.Drawing.Rectangle(x, y, width, height);
//要截取的区域大小
//加载图片
System.Drawing.Image img = System.Drawing.Image.FromStream(new System.IO.MemoryStream(System.IO.File.ReadAllBytes(oldPath)));
//判断超出的位置否
if ((img.Width < x + width) || img.Height < y + height)
{
MessageBox.Show("裁剪尺寸超出原有尺寸!");
img.Dispose();
return;
}
//定义Bitmap对象
System.Drawing.Bitmap bmpImage = new System.Drawing.Bitmap(img);
//进行裁剪
System.Drawing.Bitmap bmpCrop = bmpImage.Clone(cropArea, bmpImage.PixelFormat);
//保存成新文件
bmpCrop.Save(newPath);
//释放对象
img.Dispose(); bmpCrop.Dispose();
}
/// <summary>
/// 调用此函数后使此两种图片合并,类似相册,有个
/// 背景图,中间贴自己的目标图片
/// </summary>
/// <param name="sourceImg">粘贴的源图片</param>
/// <param name="destImg">粘贴的目标图片</param>
public static Image CombinImage(string sourceImg, string destImg)
{
Image imgBack = System.Drawing.Image.FromFile(sourceImg); //相框图片
Image img = System.Drawing.Image.FromFile(destImg); //照片图片
//从指定的System.Drawing.Image创建新的System.Drawing.Graphics
Graphics g = Graphics.FromImage(imgBack);
//g.DrawImage(imgBack, 0, 0, 148, 124); // g.DrawImage(imgBack, 0, 0, 相框宽, 相框高);
g.FillRectangle(System.Drawing.Brushes.Black, -50, -50, (int)212, ((int)203));//相片四周刷一层黑色边框,这里没有,需要调尺寸
//g.DrawImage(img, 照片与相框的左边距, 照片与相框的上边距, 照片宽, 照片高);
g.DrawImage(img, -50, -50, 212, 203);
GC.Collect();
string saveImagePath ="D:/测试文件夹/sss.png";
//save new image to file system.
imgBack.Save(saveImagePath, ImageFormat.Png);
return imgBack;
}
最新文章
- Html 之div+css布局之css选择器
- Stanford机器学习---第六讲. 怎样选择机器学习方法、系统
- phaser
- 关于跨域响应头Access-Control-Allow-Headers的一些说明
- java开发--JavaScript
- python学习笔记25(文件管理 os包)
- 京东区块排版负margin用法
- 使用es6特性封装async-mysql
- 接口登录CSDN发布博客---封装方法,使用unittest框架
- 团队作业8——测试与发布(Beta阶段)
- Java开源生鲜电商平台-性能优化以及服务器优化的设计与架构(源码可下载)
- C# 实现http不同方法的请求
- NPOI导出Excel帮助类
- bzoj3255 一个关于序列的游戏
- Linux 线程调度
- mysql 可重复执行添加列
- Redis实战(五)CentOS 7上搭建Redis集群
- pyqt5之QColorDialog颜色对话框最简单使用
- mysql碰到的问题总结
- 配置nginx,Tomcat日志记录请求耗时