2016-10-14 317 views
0

我有一個mvc應用程序,我想添加一個照片上傳功能。要求是保存原始大小和另一個裁剪爲正方形大小的縮略圖使用。ASP.NET + jQuery上傳圖片原始大小+裁剪後的大小

是否可以使用jquery在ui中創建裁剪圖像並同時上傳原始大小和裁剪圖像?我應該從哪裏開始實現這一效果?

編輯:我想知道Facebook的如何完成其​​個人資料圖片裁剪,其中的原始照片被保存,但資料圖片爲正方形(原尺寸顯示,當你點擊圖片)

+0

無需上傳2個不同的圖像。簡單的方法是上傳原始圖像並創建一個新圖像並將其保存在服務器上的另一個路徑上。你可以在服務器端使用c#來做到這一點。 – user3151766

+0

@ user3151766我想涉及jquery,因爲我想添加裁剪功能,以便用戶/上傳者可以選擇照片的哪個部分應該是縮略圖 –

+0

查看https://fengyuanchen.github.io/cropperjs/可以強烈推薦。使用客戶端進行這種工作可以讓您將服務器表格卸載到不必要的工作上,並且允許您的用戶自己裁剪以適應將來的功能 –

回答

1

我已經這樣做了很長很久以前,在VB.NET,我刪除冗餘代碼,並在這裏應該如何看起來像:

HTML部分:

<form action="AddToDatabase" method="post" enctype="multipart/form-data"> 
<input type="id" name="pictureId"/> <br/> 
<input type="file" name="picture" accept="image/gif, image/jpeg" required/> <br/> 
<input type="submit" value="Upload" /> 
</form> 

這取瀏覽圖像,並且傳遞給AddToDatabase函數內部控制器

控制器:

Public Class HomeController 
Public Function AddToDatabase(ByVal pictureId as Long, ByVal picture As HttpPostedFileBase) 
Dim manager As New DbWorks 
Dim result = manager.SaveAndResize(pictureId, picture) 
Return Content(result) 
End Class 

控制器需要pictureId和圖象本身並將其傳遞給DbWorks服務類,它做所有的工作

DbWorks類別:

Public Class DbWorks 
    Public Function SaveAndResize(ByVal picturetId As Long, ByVal picture As HttpPostedFileBase) As String 
    Dim picSource As Image = Image.FromStream(picture.InputStream) 
    Dim bmSource As New Bitmap(picSource) 
    Dim bmDest As New Bitmap(300, 300) //Saves in 300x300 resolution 
    Dim grDest As Graphics = Graphics.FromImage(bmDest) 
    grDest.DrawImage(bmSource, 0, 0, bmDest.Width, bmDest.Height) 
    Dim picDest As Image = bmDest 
    picDest.Save(HttpContext.Current.Server.MapPath("~/Pictures/" + CStr(pictureId) + ".jpeg")) 
    Dim path = ("~/Pictures/" + CStr(pictureId) + ".jpeg") 
    Return path 
    End Function 
    End Class 

SaveAndResize函數將帶有id的圖像轉換爲位圖並以300x300分辨率保存,從而在與pictureId相關的系統中創建文件路徑。

不要忘記添加System.Drawing庫來管理您的圖像。

P.S.我非常肯定你正在用c#做你的工作,但它不會花你太多時間來轉換它。此外,在這種情況下,你可以避免使用jQuery庫。