0

当用户上传文件时,

检查图像宽度/高度是否超过设定限制并在需要时调整图像大小的最佳方法是什么?

目前,我正在尝试将其保存HttpPostedFileBase到临时文件夹,以便Bitmap.FromFile()仅使用检查图像的宽度/高度来加载它。

然后,使用ImageResizer库来调整图像大小ImageResizer.ImageJob

到目前为止,我out of memory exceptionBitmap.FromFile(path)舞台上击球。

4

1 回答 1

0

ImageResizer 3.4 包含一个新的 ImageUploadHelper 项目/插件,以使其更安全、更容易。(您可以在源下载的 /Plugins 文件夹中找到它,但它还没有 NuGet 包,因为它仍处于预览状态。

long pixels = 0;

try{
  var size = ImageUploadHelper.GetImageSize(httpPostedFile);
  pixels = size[0] * size[1];
} catch{} //Corrupted images will cause an OutOfMemoryException.

string resultPath = null;
if (pixels > 3 * 1000 * 1000){
  var j = new ImageJob(httpPostedFile,"~/uploads/<guid>.<ext>", new Instructions("maxwidth=1700&maxheight=1700");
  j.Build();
  resultPath = PathUtils.GuessVirtualPath(j.FinalPath);
}else{
  resultPath = "~/uploads/" + ImageUploadHelper.SaveUploadedFileSafely("~/uploads",httpPostedFile);
}
于 2013-09-10T16:22:08.963 回答