您的位置:首页 > 编程语言 > ASP

实现Asp.net mvc上传头像加剪裁功能

2015-08-10 00:00 901 查看

在我们使用QQ上传头像,注册用户账号时是不是都会遇到上传图像,并根据自己的要求对图像进行裁剪,这是怎么实现的呐?

本文主要介绍了Asp.net mvc实现上传头像加剪裁功能,分享给大家供大家参考。具体如下:

运行效果截图如下:



具体代码如下:

前台代码



<link href="~/Content/fineuploader.css" rel="stylesheet" />
<link href="~/Content/jquery.Jcrop.min.css" rel="stylesheet" />
<link href="~/Content/crop.min.css" rel="stylesheet" />
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script src="~/Scripts/jquery.fineuploader-3.1.min.js"></script>
<script src="~/Scripts/jquery.Jcrop.min.js"></script>
<script src="~/Scripts/crop.js"></script>

<div id="jquery-wrapped-fine-uploader"></div>
  <div id="message"></div>
  <div id="crop_wrap">
    <div id="crop_holder">
      <div id="crop_area" class="border">
        <img id="crop_image" alt="" src="" class="preview-image" style="display: none" />
      </div>
      <div id="preview_area">
        <div id="preview_title">当前头像</div>
        <div id="preview_large_text" class="preview-text">180px × 180px</div>
        <div id="preview_large_wrap" class="border">
          <img id="preview_large" alt="" src="@ViewBag.Path" class="preview-image" style=""/></div>
      </div>
    </div>
    <div id="crop_operation" style="display: none;">
      <form id="form_crop" action="/home/index" method="post">
        <input type="hidden" name="x" id="x">
        <input type="hidden" name="y" id="y">
        <input type="hidden" name="w" id="w">
        <input type="hidden" name="h" id="h">
        <input type="hidden" name="imgsrc" id="imgsrc">
        <input id="crop_operation_submit" type="submit" value="裁切并保存" /><span id="crop_operation_msg" style="display: none" class="green"></span>
      </form>
    </div>
    <div id="croped_message" class="green"></div>
  </div>


后台代码



public ActionResult Index()
    {
      return View();
    }

    /// <summary>
    /// 保存缩略图
    /// </summary>
    /// <param name="form"></param>
    /// <returns></returns>
    [HttpPost]
    public ActionResult Index(FormCollection form)
    {
      int x = Convert.ToInt32(form["x"]);
      int y = Convert.ToInt32(form["y"]);
      int w = Convert.ToInt32(form["w"]);
      int h = Convert.ToInt32(form["h"]);
      string imgsrc = form["imgsrc"].Substring(0, form["imgsrc"].LastIndexOf("?"));
      string path = ImgHandler.CutAvatar(imgsrc, x, y, w, h);

      //保存Path
      
      ViewBag.Path = path;
      return View();
    }

    /// <summary>
    /// 上传头像
    /// </summary>
    /// <param name="qqfile"></param>
    /// <returns></returns>
    [HttpPost]
    public ActionResult ProcessUpload(string qqfile)
    {
      try
      {
        string uploadFolder = "/Upload/original/" + DateTime.Now.ToString("yyyyMM") + "/";
        string imgName = DateTime.Now.ToString("ddHHmmssff");
        string imgType = qqfile.Substring(qqfile.LastIndexOf("."));
        string uploadPath = "";
        uploadPath = Server.MapPath(uploadFolder);
        if (!Directory.Exists(uploadPath))
        {
          Directory.CreateDirectory(uploadPath);
        }
        using (var inputStream = Request.InputStream)
        {
          using (var flieStream = new FileStream(uploadPath + imgName + imgType, FileMode.Create))
          {
            inputStream.CopyTo(flieStream);
          }
        }

        return Json(new { success = true, message = uploadFolder + imgName + imgType });
      }
      catch (Exception e)
      {
        return Json(new { fail = true, message = e.Message });
      }
    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: