Just the project used to upload + clipping function, sent up to facilitate later use.
I can not tell you are actually from the blog garden Grilled front code, haha.
Front end is jquery+fineuploader+jquery. Jcrop
Backstage is asp.net mvc 4
The core JS calling code is the Crop.js and Helper folder under the ImgHandler.cs
Effect Chart
Front Code
<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"> current avatar </ 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 = "crop and save" /> <span id = "crop_operation_msg" style = "display: none" class = "green"> </ span> </ form> </ div> <div id = "croped_message" class = "green"> </ div> </ div>
Background Code
public ActionResult Index ()
{
return View ();
}
/// <summary>
/// save thumbnail
/// </ 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);
// Save Path
ViewBag.Path = path;
return View ();
}
/// <summary>
/// upload avatar
/// </ 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});
}
}
Code is not complete, here is the source: download