2016-01-10 66 views
0

我使用asp.net mvc 4建立一個網站,用戶可以在上傳之前裁剪圖像,但由於某種原因,它不是裁剪。這裏是我的代碼,WebImage作物不在asp.net工作mvc

控制器

[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" /> 
} 

JS

$(document).ready(function() { 
    var img_left = 0; 
    var img_top = 0; 

    $("#blah01").load(function() { 
     var imgCor = $("#blah01").position(); 
     img_left = imgCor.left; 
     img_top = imgCor.top; 
    }); 
    $("#cropper").draggable({ 
     containment: "#blah01", scroll: false, 
     stop: function() { 
      var getCor = $("#cropper").position(); 
      $("#Top").val(getCor.top - img_top); 
      $("#Left").val(getCor.left - img_left); 
      $("#Bottom").val(getCor.top - img_top + 200); 
      $("#Right").val(getCor.left - img_left + 160); 
     } 
    }); 
}); 

有什麼不對勁以米y代碼?如何使用文本框中的給定值使用WebImage Crop()函數裁剪圖像?嚴重需要這個幫助!謝謝。

+0

你得到的錯誤是什麼? –

+0

我沒有得到任何錯誤。它不是剪裁,而是上傳整個圖像。它應該根據文本框的值裁剪,然後上傳裁剪後的圖像。 –

+0

不,根據你的代碼,我相信視圖是上傳整個圖像,然後在服務器上根據作物的尺寸裁剪圖像 –

回答

0

你有一個錯誤在這一點上:

img.Crop(Top, Left, Bottom, Right); 
img.Save(path, picExt); 

的方法作物返回您還沒有收集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); 

它只是增加200像素頂部和160像素到左。它只是靜態的。您只需在底部和右側文本框中傳遞純整數值即可進行測試。 C#代碼正在工作。我檢查了它。

+0

謝謝,但它仍然無法正常工作。 –

+0

你可以請調試,讓我知道你是什麼值得到頂部,左側,底部和右側? –

+0

我從「7,355,207,515」等文本框中獲得了完全相同的值。 –