图片的裁剪,两个图片合成一个图片(这是从网上摘的)
/// <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;
        }

最新文章

  1. Html 之div+css布局之css选择器
  2. Stanford机器学习---第六讲. 怎样选择机器学习方法、系统
  3. phaser
  4. 关于跨域响应头Access-Control-Allow-Headers的一些说明
  5. java开发--JavaScript
  6. python学习笔记25(文件管理 os包)
  7. 京东区块排版负margin用法
  8. 使用es6特性封装async-mysql
  9. 接口登录CSDN发布博客---封装方法,使用unittest框架
  10. 团队作业8——测试与发布(Beta阶段)
  11. Java开源生鲜电商平台-性能优化以及服务器优化的设计与架构(源码可下载)
  12. C# 实现http不同方法的请求
  13. NPOI导出Excel帮助类
  14. bzoj3255 一个关于序列的游戏
  15. Linux 线程调度
  16. mysql 可重复执行添加列
  17. Redis实战(五)CentOS 7上搭建Redis集群
  18. pyqt5之QColorDialog颜色对话框最简单使用
  19. mysql碰到的问题总结
  20. 配置nginx,Tomcat日志记录请求耗时

热门文章

  1. JS正则表达式大全
  2. RemotelyAnywhere 11.0.2716 SERVER EDITION 绿色破解安装版
  3. android 命名 数组 所有国家 String[] COUNTRIES
  4. 【树莓派】【转】利用USB网卡配置树莓派为无线热点
  5. [转]抓取安卓APP内接口的方法--Charles
  6. [Unity] Android插件
  7. HTML转义字符大全
  8. 图片的DataURL技术
  9. pycharm快捷键、常用设置、包管理
  10. linux下使用多线程编写的聊天室