欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#图片裁切,生成新图片

程序员文章站 2022-04-15 11:10:49
/// 图片裁剪,生成新图,保存在同一目录下,名字加_new,格式1.png 新图1_new.png /// /// 要修改图片完整路径 /// 修改起点x坐标 /// 修改起点y坐标 /// 新图宽度 /// 新图高度 public static void cai... ......
        /// 图片裁剪,生成新图,保存在同一目录下,名字加_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();
        }