ASP.NET + jQuery上传图像原始大小+裁剪大小

时间:2016-10-14 04:53:37

标签: jquery css asp.net-mvc

我有一个mvc应用程序,我想添加照片上传功能。要求是保存原始大小,另一个是裁剪为方形大小以供缩略图使用。

是否可以使用jquery在ui中创建裁剪图像并同时上传原始尺寸和裁剪图像?我应该从哪里开始实现这种效果?

编辑:我想知道facebook如何在保存原始照片的情况下对其个人资料图片进行裁剪,但个人资料图片是正方形(单击照片时会显示原始尺寸)

1 个答案:

答案 0 :(得分: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>

这将获取浏览的图像并传递给Controller

中的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

Controller获取pictureId和picture本身并将其传递给DbWorks Service类,它完成所有工作

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库。