我有一个mvc应用程序,我想添加照片上传功能。要求是保存原始大小,另一个是裁剪为方形大小以供缩略图使用。
是否可以使用jquery在ui中创建裁剪图像并同时上传原始尺寸和裁剪图像?我应该从哪里开始实现这种效果?
编辑:我想知道facebook如何在保存原始照片的情况下对其个人资料图片进行裁剪,但个人资料图片是正方形(单击照片时会显示原始尺寸)答案 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库。