jquery 上传图片自由截取

为了使用户能自定义个人头像,需要提供一个对上传图片的截图功能,当前很多网站特别是SNS类网站都提供这样的功能,非常实用。本文主要是利用jQuery的imgAreaSelect插件实现。

首先引入三个文件:

 <script src="<%:Url.Content("~/UI/Scripts/jquery-1.8.2.min.js") %>"></script>  
<link href='<%:Url.Content("~/UI//CSS/imgareaselect-default.css") %>' rel="stylesheet" />
    <script src='<%:Url.Content("~/UI/Scripts/jquery.imgareaselect.pack.js")%>'></script>

前段主要代码:初始化所选择截取的图片

 $('#photo').imgAreaSelect({
                aspectRatio: '1:1',
                handles: true
               , fadeSpeed: 200
               , onSelectChange: preview
                // , onSelectEnd: someFunction
            });

设置所选区域大小值,与坐标:

function preview(img, selection) {
            if (!selection.width || !selection.height)
                return;

            var scaleX = 100 / selection.width;
            var scaleY = 100 / selection.height;

            $('#left').val(selection.x1);
            $('#top').val(selection.y1);
            $('#w').val(selection.width);
            $('#h').val(selection.height);
        }

  实现代码:前台

            //上传图片
            $("#File1").change(function () {

                $("#formSave").ajaxSubmit({
                    type: "POST",
                    url: "/Home/UpPic/",
                    dataType: "json",
                    success: function (data) {
                        if (data.msg == "OK") {
                            $("#photo").attr("src", data.path)
                        } else {
                            alert(data.msg);
                        }
                    }
                });
            });

            //剪切后保存头像
            $("#btnSaveImg").click(function () {

                if ($('#left').val() == "") {
                    alert("请先截取图片");
                    return;
                }

                $("#formSave").ajaxSubmit({
                    type: "POST",
                    url: "/Home/SavePic/",
                    dataType: "json",
                    success: function (data) {
                        if (data.msg == "OK") {
                            $("#photo").attr("src", data.path)
                            alert("保存成功!");
                        } else {
                            alert(data.msg);
                        }
                    }
                });
            });

  实现代码后台:

 /// <summary>
        /// 上传图片
        /// </summary>
        public void UpPic()
        {
            try
            {
                var file = Request.Files["File1"];
                if (file.ContentLength == 0)
                {
                    ReWrite("Error","请选择文件");
                    return;
                }
                if (file.ContentLength > 307200)
                {
                    ReWrite("Error","文件过大");
                    return;
                }

                int width = 0; int height = 0;

                using (Image originalImg = Image.FromFile(file.FileName))
                {
                    double bi = originalImg.Width / originalImg.Height;
                    if (bi > 1.6)
                    {
                        width = 600;
                        height = (int)(600 / bi);
                    }
                    else
                    {
                        height = 360;
                        width = (int)(360 * bi);
                    }
                }

                //w600 h360;
                string extensionName = System.IO.Path.GetExtension(file.FileName).ToLower();
                string fileName ="temp" + extensionName;

                string p = "/Images/" + fileName;
                string path = Server.MapPath("~" + p);
                // file.SaveAs(path);
                Session["path"] = "~" + p;
                CommonMethod.AutoMakeThumNail(file.FileName, path, width, height, PicThumNailModel.H);
                ReWrite("OK", p);
            }
            catch (Exception ex)
            {
                ReWrite("Error",ex.Message);
                return;
            }
        }

        public void SavePic()
        {
             
            
            string photo ="";
            if (Session["path"] != null)
            {
                photo = Session["path"].ToString();
            }
            else
            {
                photo = "~/Images/20140430172226.png";
            }
            photo = Server.MapPath(photo);
            using (Image originalImg = Image.FromFile(photo))
            {

                int imageWidth = originalImg.Width;
                int imageHeight = originalImg.Height;
                int cutTop = Int32.Parse(Request.Form["top"]);
                int cutLeft = Int32.Parse(Request.Form["left"]);
                int dropWidth = Int32.Parse(Request.Form["w"]);
                int dropHeight = Int32.Parse(Request.Form["h"]);
                ImageHelp imgHelp = new ImageHelp();

               // string picPath = CommonMethod.GetConfig("HeadPicPath");

                string extensionName = System.IO.Path.GetExtension(photo).ToLower();
                string picName =DateTime.Now.ToString("yyyyMMddHHmmssff") + extensionName;

                string pp = "/Images/" + picName;


                imgHelp.GetPart(photo, Server.MapPath("/Images/"), 0, 0, dropWidth, dropHeight, cutLeft, cutTop, imageWidth, imageHeight, picName);

             
                ReWrite("OK", pp);
            }
          //  DelPic(photo);
        }

 

 

转载请注明出处:http://www.cnblogs.com/Xingsoft-555/

 

posted @ 2014-05-23 21:30  Xingsoft  阅读(15356)  评论(1编辑  收藏  举报