C# 图片的裁剪,两个图片合成一个图片

来源:互联网 发布:mac ps 图骗透明处理 编辑:程序博客网 时间:2024/04/27 18:58
 /// <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;        }

0 0