在我们使用QQ上传头像,注册用户账号时是不是都会遇到上传图像,并根据自己的要求对图像进行裁剪,这是怎么实现的呐?
本文主要介绍了Asp.net mvc实现上传头像加剪裁功能,分享给大家供大家参考。具体如下:
运行效果截图如下:
具体代码如下:
前台代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
< 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 >
|
后台代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
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 });
}
}
|
以上就是实现Asp.net mvc上传头像加剪裁功能的部分代码,小编分享给大家参考,希望对大家的学习有所帮助。