如何解决ASP.NET MVC3调整用户配置文件图像的大小
| 我想用图像创建用户个人资料。该用户可以上传他的照片,在他的个人资料中将有这张照片,而在论坛中将有从原始照片创建的小图像。我没有显示图像但调整大小的问题。我在控制器中有以下代码,用户可以在其中更改其信息(姓名,年龄,...)并可以上传照片:[HttpPost,ValidateInput(false)]
public ActionResult Upravit(int id,FormCollection collection,HttpPostedFileBase file)
{
try
{
var user = repo.Retrieve(id);
if (TryUpdateModel(user))
{
if (file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath(\"~/Fotky/Profilove/\"),(user.Name.Name + \" \" + user.Name.Surname + Path.GetExtension(fileName)));
file.SaveAs(path);
user.ImagePath = \"/Fotky/Profilove/\" + user.Name.Name + \" \" + user.Name.Surname + Path.GetExtension(fileName);
}
repo.Save(user);
return RedirectToAction(\"Index\");
}
return View();
}
catch
{
return View();
}
}
我的看法如下所示:
@using (Html.BeginForm(\"Upravit\",\"Uzivatel\",FormMethod.Post,new { enctype = \"multipart/form-data\" }))
{
@Html.ValidationSummary(true)
<fieldset>
<legend>User</legend>
@Html.HiddenFor(model => model.UserID)
<div class=\"editor-label\">
@Html.LabelFor(model => model.UserName)
</div>
<div class=\"editor-field\">
@Html.EditorFor(model => model.UserName)
@Html.ValidationMessageFor(model => model.UserName)
</div>
.
.
<input type=\"file\" name=\"file\" id=\"file\" />
<p>
<input type=\"submit\" value=\"Save\" />
</p>
</fieldset>
}
就像我说的,我只需要向控制器添加代码的帮助,这些代码就可以从原始图像创建小图像并将其保存到。谢谢你的帮助
解决方法
用C#调整图像大小的例子不胜枚举。因此,只需选择一种您喜欢的方法即可。例如,这是@Craig Stuntz链接的对您的问题的评论。如果您不喜欢这种方法,请选择另一种方法并进行调整。
if (file != null && file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
// TODO: adjust the filenames here
var path = Path.Combine(Server.MapPath(\"~/\"),fileName);
using (var input = new Bitmap(file.InputStream))
{
int width;
int height;
if (input.Width > input.Height)
{
width = 128;
height = 128 * input.Height / input.Width;
}
else
{
height = 128;
width = 128 * input.Width / input.Height;
}
using (var thumb = new Bitmap(width,height))
using (var graphic = Graphics.FromImage(thumb))
{
graphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
graphic.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
graphic.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
graphic.DrawImage(input,width,height);
using (var output = System.IO.File.Create(path))
{
thumb.Save(output,System.Drawing.Imaging.ImageFormat.Jpeg);
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。