如何控制后端图像的大小 asp.net mvc

how to control size of an image in backend asp.net mvc

我有表格,管理员应该选择一张图片。 图片必须是400*300。 当管理员上传不推荐的照片时,如何发送验证消息?

public ActionResult Gallery(Gallery gallery, HttpPostedFileBase imageUrl)
{
    if (imageUrl.ContentLength > 0)
    {
        var fileName = Path.GetFileName(imageUrl.ToString());
        var path = Path.Combine(Server.MapPath("~/Uploads/Images"), 
                                                fileName);
        imageUrl.SaveAs(path);
    }
    else
    {
        return View();
    }
}

使用FileInfo 属性 获取文件大小(以字节为单位),Bitmap 包含文件大小(宽度和高度)。 您现在可以在 imgHeightimgWidth

上进行测试

我认为您只需要位图属性,但为了以防万一,我还将文件大小的代码以字节为单位。

FileInfo file = new FileInfo(open.FileName);
var sizeInBytes = file.Length;

Bitmap img = new Bitmap(open.FileName);

var imgHeight = img.Height;
var imgWidth = img.Width;

使用

保存文件之前
imageUrl.SaveAs(path);

和你一样,你可以先创建一个图像,像这样:

Image myImage = Image.FromStream(imageUrl.InputStream);

该图片 class 上有关于图片的信息,您也可以从图片中保存:

if (myImage.Height != 400 || myImage.Width != 300) {
  // ... your code the inform the user
} else {
  myImage.Save(path);
}

但是,您也可以在 C# 代码中缩小照片尺寸,而不是强制用户上传宽度和高度完全正确的照片(用户可能没有这样的照片)。我通常使用 nuget 上可用的 ThumbnailSharp。我认为这会给用户带来更好的用户体验。