Существует ли простой и динамичный способ создания миниатюр и изменения размера
изображения в MVC3 / Razor? Помощник, библиотека, что-нибудь?
Для этого можно использовать встроенную сборку System.Drawing и класс Image. Вы можете написать действие контроллера, которое будет передаваться в качестве аргументов имени изображения и желаемого нового размера, и это действие контроллера будет выполнять изменение размера и возвращать новый образ.
Например:
public ActionResult Thumbnail(int width, int height)
{
// TODO: the filename could be passed as argument of course
var imageFile = Path.Combine(Server.MapPath("~/app_data"), "test.png");
using (var srcImage = Image.FromFile(imageFile))
using (var newImage = new Bitmap(width, height))
using (var graphics = Graphics.FromImage(newImage))
using (var stream = new MemoryStream())
{
graphics.SmoothingMode = SmoothingMode.AntiAlias;
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
graphics.DrawImage(srcImage, new Rectangle(0, 0, width, height));
newImage.Save(stream, ImageFormat.Png);
return File(stream.ToArray(), "image/png");
}
}
А теперь включите это действие в вашем представлении:
<img src="@Url.Action("Thumbnail", "SomeController", new { width = 100, height = 50 })" alt="thumb" />