private byte[] ProcessImage(UploadImageModel model, string fileName) { using var fileStream = model.File.OpenReadStream(); byte[] bytes = new byte[model.File.Length]; fileStream.Read(bytes, 0, (int)model.File.Length); using (MemoryStream inStream = new MemoryStream(bytes)) { var img = Image.FromStream(inStream); var scaledImage = img.SetResizeResolution(model.Width, model.XDpi, model.YDpi); if (!string.IsNullOrEmpty(model.WatermarkText)) { scaledImage = scaledImage.SetWatermarkText(model.WatermarkText); } if (!string.IsNullOrEmpty(model.BackGroundColor)) { scaledImage = scaledImage.SetBackgroundColor(model.BackGroundColor); } var processedImage = Helper.ImageToByteArray(scaledImage, fileName); _cache.Set(model.ToString(), processedImage); WriteFile(processedImage, fileName); return(processedImage); } }
public IActionResult Upload([FromForm] UploadImageModel model) { if (!ModelState.IsValid) { return(BadRequest(new { message = "Required parameters are missing" })); } if (!CheckIfImageFile(model.File)) { return(BadRequest(new { message = "Invalid file extension" })); } var fileName = DateTime.Now.Ticks + model.Extension; var extension = "." + model.File.FileName.Split('.')[model.File.FileName.Split('.').Length - 1]; var contentType = Helper.GetFileContentType(extension); var data = _cache.Get(model.ToString()); if (data == null) { var processedImage = ProcessImage(model, fileName); return(Ok(File(processedImage, contentType, fileName))); } return(Ok(File(data, contentType, fileName))); }