当用户上传文件时,
检查图像宽度/高度是否超出设定限制的最佳方法是什么,并在需要时调整图像大小?
目前我正在尝试将HttpPostedFileBase
保存到临时文件夹,以便使用Bitmap.FromFile()
加载它,只需检查图像的宽度/高度。
然后,使用ImageResizer
库使用ImageResizer.ImageJob
调整图片大小。
到目前为止,我正在out of memory exception
阶段点击Bitmap.FromFile(path)
。
答案 0 :(得分:0)
ImageResizer 3.4包含一个新的ImageUploadHelper项目/插件,使这更安全,更容易。 (您可以在source download的/ 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);
}