zoukankan      html  css  js  c++  java
  • C# 图片的裁剪,两个图片合成一个图片

    图片的裁剪,两个图片合成一个图片(这是从网上摘的)
    /// <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;
            }
  • 相关阅读:
    Java实现 LeetCode 617 合并二叉树(遍历树)
    Java实现 LeetCode 611 有效三角形的个数(双指针)
    Java实现 LeetCode 611 有效三角形的个数(双指针)
    Java实现 LeetCode 611 有效三角形的个数(双指针)
    Java实现 LeetCode 609 在系统中查找重复文件(阅读理解+暴力大法)
    Java实现 LeetCode 609 在系统中查找重复文件(阅读理解+暴力大法)
    PHP mb_substr() 函数
    PHP substr() 函数
    PHP strtr() 函数
    PHP strtoupper() 函数
  • 原文地址:https://www.cnblogs.com/yanjinliang/p/5972038.html
Copyright © 2011-2022 走看看