在MVC 6中调整上传图像大小的最佳方法是什么?我想存储图像的多个变体(例如小,大等),以便能够选择稍后显示的内容.
这是我的行动代码.
[HttpPost] public async Task<IActionResult> UploadPhoto() { if (Request.Form.Files.Count != 1) return new HttpStatusCodeResult((int)HttpStatusCode.BadRequest); IFormFile file = Request.Form.Files[0]; // calculate hash var sha = System.Security.Cryptography.SHA256.Create(); byte[] hash = sha.ComputeHash(file.OpenReadStream()); // calculate name and patch where to store the file string extention = ExtentionFromContentType(file.ContentType); if (String.IsNullOrEmpty(extention)) return HttpBadRequest("File type not supported"); string name = WebEncoders.Base64UrlEncode(hash) + extention; string path = "uploads/photo/" + name; // save the file await file.SaveAsAsync(this.HostingEnvironment.MapPath(path)); }
解决方法
我建议使用Image Processor库.
http://imageprocessor.org/imageprocessor/
然后你可以做一些事情:
using (var imageFactory = new ImageFactory()) using (var fileStream = new FileStream(path)) { file.Value.Seek(0,SeekOrigin.Begin); imageFactory.FixGamma = false; imageFactory.Load(file.Value) .Resize(new ResizeLayer(new Size(264,176))) .Format(new JpegFormat { Quality = 100 }) .Quality(100) .Save(fileStream); }