ASP.NET MVC3调整用户配置文件的图像大小
本文关键字:图像 配置文件 用户 NET MVC3 调整 ASP | 更新日期: 2023-09-27 17:59:18
我想用图像创建用户配置文件。该用户可以上传他的照片,在他的个人资料中会有这张照片,在论坛中会有从原始照片创建的小图像。我对显示图像没有问题,但对调整大小没有问题。我在控制器中有这个代码,用户可以更改他的信息(姓名、年龄…),并可以上传照片:
[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, 0, 0, width, height);
using (var output = System.IO.File.Create(path))
{
thumb.Save(output, System.Drawing.Imaging.ImageFormat.Jpeg);
}
}
}
}