基本信息
源码名称:mvc 上传图片后剪切图片
源码大小:7.22M
文件格式:.rar
开发语言:C#
更新时间:2016-03-07
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 5 元 
   源码介绍

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Helpers;
using System.Web.Mvc;

namespace PhotoUpload.Controllers
{
    public class UpLoadController : Controller
    {
        //
        // GET: /Upload/

        public ActionResult SetPhoto()
        {
            return View();
        }
        #region 上传头像
        //上传头像
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult ShangChuanEmpPhoto()
        {
            WebImage pic = GetImageFromRequest();
            int MaxWidth = 600;
            int MaxHeight = 400;
            int MinWidth = 100;
            int MinHeight = 100;
            if (pic != null)
            {
                string imageName = DateTime.Now.ToString("yyyyMMddHHmmfffff");
                string imageFormat = pic.ImageFormat;
                if (pic.Width > MaxWidth || pic.Height > MaxHeight) pic.Resize(MaxWidth, MaxHeight, true, true);
                if (pic.Width < MinWidth || pic.Height < MinHeight) pic.Resize(MinWidth, MinHeight, true, false);
                pic.Save(@"~\Content\Images\\Temp\\"   imageName);

                TouXiangInfo touxiang = new TouXiangInfo()
                {
                    w_full = pic.Width,
                    h_full = pic.Height,
                    tempfilename = imageName   "."   imageFormat
                };
                return Json(touxiang);
            }
            return Content("0");
        }
        public static WebImage GetImageFromRequest()
        {
            var request = System.Web.HttpContext.Current.Request;

            if (request.Files.Count == 0)
            {
                return null;
            }

            try
            {
                var postedFile = request.Files[0];
                var image = new WebImage(postedFile.InputStream)
                {
                    FileName = postedFile.FileName
                };
                return image;
            }
            catch
            {
                return null;
            }
        }
        //裁剪并保存头像
        [HttpPost]
        public ActionResult CaiJianEmpPhoto(string x1, string y1, string w, string h, string w_full, string h_full, string tempfilename)
        {
            WebImage pic = new WebImage(@"~\Content\Images\\Temp\\"   tempfilename);
            if (pic != null)
            {
                string imageName = DateTime.Now.ToString("yyyyMMddHHmmfffff");
                int intW = 0, intH = 0;
                if (h.IndexOf(".") != -1)
                {
                    float tmp = float.Parse(h);
                    intH = (int)tmp;
                }
                else
                    intH = int.Parse(h);

                if (w.IndexOf(".") != -1)
                {
                    float tmp = float.Parse(w);
                    intW = (int)tmp;
                }
                else
                    intW = int.Parse(w);

                pic.Crop(int.Parse(y1), int.Parse(x1), int.Parse(h_full) - (int.Parse(y1)   intH), int.Parse(w_full) - (int.Parse(x1)   intW));

                WebImage picTmp = pic;
                SaveTouXiang(picTmp, TouXiangDaXiao.Middle, imageName, "否");
                picTmp = pic;
                SaveTouXiang(picTmp, TouXiangDaXiao.Big, imageName, "否");
                picTmp = pic;
                SaveTouXiang(picTmp, TouXiangDaXiao.Small, imageName, "否");
                picTmp = pic;
                SaveTouXiang(picTmp, TouXiangDaXiao.Middle, imageName, "是");

                return Content("Small_"   imageName   ".png");
            }
            return Content("0");
        }

        public enum TouXiangDaXiao : int
        {
            Small = 50,
            Middle = 70,
            Big = 160,
        }

        [NonAction]
        public void SaveTouXiang(WebImage pic, TouXiangDaXiao size, string imageName, string ifMask)
        {
            int width = (int)size, height = (int)size;
            switch (size)
            {
                case TouXiangDaXiao.Small:
                    imageName = "Small_"   imageName;
                    width = (int)size   2;
                    height = (int)size   32;
                    break;
                case TouXiangDaXiao.Middle:
                    if (ifMask == "是")
                    {
                        imageName = "Mask_"   imageName;
                        width = (int)size   1;
                        height = (int)size   61;
                    }
                    else
                    {
                        imageName = "Middle_"   imageName;
                        width = (int)size   2;
                        height = (int)size   62;
                    }
                    break;
                case TouXiangDaXiao.Big:
                    imageName = "Big_"   imageName;
                    width = (int)size   2;
                    height = (int)size   92;
                    break;
            }

            pic.Resize(width, height, true, false);
            if (ifMask == "是")
            {
                WebImage mask = new WebImage(@"~\Content\Images\blog-admin-mask.png");
                pic.AddImageWatermark(
                    mask,
                    width: (int)size,
                    height: (int)size,
                    horizontalAlign: "Left",
                    verticalAlign: "Top",
                    opacity: 100,
                    padding: 0
                );
            }
            if (ifMask == "是")
                pic.Crop(0, 0, 1, 1);
            else pic.Crop(1, 1, 1, 1);
            pic.Save(@"~\Content\Images\"   imageName, "png");
        }
        #endregion 上传头像
    }
    //上传图片
    public class TouXiangInfo
    {
        public int x1 { get; set; }
        public int y1 { get; set; }
        public int x2 { get; set; }
        public int y2 { get; set; }
        public int w { get; set; }
        public int h { get; set; }
        public int w_full { get; set; }
        public int h_full { get; set; }
        public string tempfilename { get; set; }
        public string savedfilename { get; set; }
    }
}