croppic 图片裁剪

#region 3.1.3 保存裁剪后的图片方法 +ContentResult TemplateCropImg()
        /// <summary>
        /// 保存裁剪后的图片方法
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        public ContentResult TemplateCropImg()
        {
            string imageUrl = Request.Form["imgUrl"]; //要剪裁图片的地址

            int imageWidth = Convert.ToInt32(Request.Form["imgInitW"]); //原图宽度
            int imageHeight = Convert.ToInt32(Request.Form["imgInitH"]); //原图高度

            int imageW = Convert.ToInt32(Math.Round(Convert.ToDouble(Request.Form["imgW"]))); //缩放后宽度
            int imageH = Convert.ToInt32(Math.Round(Convert.ToDouble(Request.Form["imgH"]))); //缩放后高度

            int cropWidth = Convert.ToInt32(Request.Form["cropW"]); //剪裁宽度
            int cropHeight = Convert.ToInt32(Request.Form["cropH"]); //剪裁高度

            int x = Convert.ToInt32(Request.Form["imgX1"]); //剪裁时X坐标
            int y = Convert.ToInt32(Request.Form["imgY1"]); //剪裁时Y坐标

            string returnData = string.Empty;

            //原始图片
            using (Image image = Image.FromFile(Server.MapPath(imageUrl)))
            {
                //将图片缩放
                Bitmap bitmap = new Bitmap(imageW, imageH);
                Graphics graph = Graphics.FromImage(bitmap);

                //设置画布的描绘质量
                graph.CompositingQuality = CompositingQuality.HighQuality;
                graph.SmoothingMode = SmoothingMode.HighQuality;
                graph.InterpolationMode = InterpolationMode.HighQualityBicubic;

                graph.DrawImage(image, new Rectangle(0, 0, imageW, imageH), new Rectangle(0, 0, imageWidth, imageHeight), GraphicsUnit.Pixel);

                MemoryStream memoryStream = new MemoryStream();
                bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Bmp);

                //缩放后的图片
                Image zoomImage = Image.FromStream(memoryStream);

                //将缩放后的图片进行裁剪
                bitmap = new Bitmap(cropWidth, cropHeight);
                graph = Graphics.FromImage(bitmap);

                //清空画布并以透明背景色填充
                graph.Clear(Color.Transparent);

                graph.DrawImage(zoomImage, 0, 0, new Rectangle(x, y, cropWidth, cropHeight), GraphicsUnit.Pixel);

                //得到裁剪后的图片
                string filePath = System.Configuration.ConfigurationManager.AppSettings["UploadDir"] + DateTime.Now.ToString("yyyyMMdd") + "/";
                if (!Directory.Exists(Server.MapPath(filePath)))
                {
                    Directory.CreateDirectory(Server.MapPath(filePath));
                }

                string fileName = filePath + DateTime.Now.Ticks + ".png";
                bitmap.Save(Server.MapPath(fileName), System.Drawing.Imaging.ImageFormat.Png);

                graph.Dispose();
                bitmap.Dispose();

                returnData = "{'status':'success','url':'" + fileName + "'}";
            }

            //删除之前上传的图片
            System.IO.File.Delete(Server.MapPath(imageUrl));

            return Content(returnData);
        }
        #endregion

  

原文地址:https://www.cnblogs.com/BigeTouch/p/5127511.html