C# WebImage裁剪在asp.net mvc中未按预期工作

C# WebImage裁剪在asp.net mvc中未按预期工作,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我正在使用Asp.NETMVC4制作一个网站,用户可以在上传之前裁剪图像,但由于某些原因,它不会裁剪。这是我的密码 控制器 [ValidateAntiForgeryToken] [HttpPost] public ActionResult AdminProfilePic(HttpPostedFileBase file, int Top, int Left, int Bottom, int Right) { if (file != null)

我正在使用Asp.NETMVC4制作一个网站,用户可以在上传之前裁剪图像,但由于某些原因,它不会裁剪。这是我的密码

控制器

    [ValidateAntiForgeryToken]
    [HttpPost]
    public ActionResult AdminProfilePic(HttpPostedFileBase file, int Top, int Left, int Bottom, int Right)
    {
        if (file != null)
        {
            string picName = User.Identity.Name;
            WebImage img = new WebImage(file.InputStream);
            string picExt = Path.GetExtension(file.FileName);
            if (picExt == ".jpg" || picExt == ".gif" || picExt == ".jpeg" || picExt == ".png")
            {
                picExt = "PNG";
                string path = System.IO.Path.Combine(Server.MapPath("~/Images/Owners/"), picName);
               
                img.Crop(Top, Left, Bottom, Right);
                img.Save(path, picExt);
                TempData["pp_success"] = "Your profile picture has been updated successfully!";
                return RedirectToAction("AdminProfilePic");
            }
            else
            {
                TempData["pp_fail"] = "Error! Please upload a valid image file only!";
                return RedirectToAction("AdminProfilePic");
            }
        }
        else
        {
            TempData["pp_fail"] = "Error! No File was selected!";
            return RedirectToAction("AdminProfilePic");
        }
    }
查看

@using (Html.BeginForm("AdminProfilePic", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true, "Error! Please provide valid information!")

    <input type="file" name="file" id="file01" style="width: 100%;" /><br />

    <img id="blah01" src="#" alt="your image" /><div id="cropper"></div>
    @Html.TextBox("Top", null, new { id = "Top" })<br />
    @Html.TextBox("Left", null, new { id = "Left" })<br />
    @Html.TextBox("Bottom", null, new { id = "Bottom" })<br />
    @Html.TextBox("Right", null, new { id = "Right" })<br />
    <input type="submit" class="btn btn-success" value="Update Profile Picture" />
}

我的代码有问题吗?如何使用
WebImage crop()
函数根据文本框中的给定值裁剪图像?

您在这一点上有一个错误:

img.Crop(Top, Left, Bottom, Right);
img.Save(path, picExt);
Crop方法返回一个您尚未收集的
WebImage
对象。该对象就是裁剪后的图像。所以做一个小小的改变:

var img_cropped=img.Crop(Top, Left, Bottom, Right);
img_cropped.Save(path, picExt);
这应该可以做到

这里的Java脚本有问题

$("#Bottom").val(getCor.top - img_top + 200);
$("#Right").val(getCor.left - img_left + 160);

它只是将200px添加到顶部,将160px添加到左侧。它只是静止的。您只需在底部和右侧文本框中传递普通整数值即可进行测试。C#代码正在工作。我检查过了。

您的错误是什么?我没有任何错误。它不是裁剪,而是上传整个图像。它应该根据文本框的值进行裁剪,然后上传裁剪后的图像。不,根据你的代码,我相信视图正在上传整个图像,然后在服务器上根据我尝试的cropWhat的大小裁剪图像。我将文本框的值作为参数传递,以便我可以使用这些值裁剪图像,然后将其上传到服务器。也许我的代码错了。如果您认为我的代码是错误的,那么请提供正确的代码。这对我很有帮助。你的视图应该有一些JavaScript。裁剪后调试代码时,您得到的Top、Bottom、Left和Right值是多少?您能调试一下并告诉我您得到的Top、Left、Bottom和Right值是多少吗?我从
7、355、207等文本框中得到的值完全相同,515
等。我可以知道您要裁剪的图像的原始大小吗?原始大小是,600px 600px好的,所以我想您得到的值太多了。例如,如果从左裁剪355px,从右裁剪515px,图像的宽度将为负。这是不可能的。所以javascript中的问题是计算裁剪大小
$("#Bottom").val(getCor.top - img_top + 200);
$("#Right").val(getCor.left - img_left + 160);