private DtoImage AddOverlay(DtoImage sourcefile, string overlayId, int resolution) { var outputfile = new DtoImage(); using (var inputstream = new MemoryStream(sourcefile.Data)) using (var overlay = GetOverlay(overlayId, resolution)) using (var output = new MemoryStream()) { var imgInput = new Image(inputstream); var imgOverlay = new Image(overlay); int height = Convert.ToInt32(Math.Sqrt((resolution * 1000000) / (((double)imgInput.Height) * (double)imgInput.Width)) * (double)imgInput.Height); int width = Convert.ToInt32(Math.Sqrt((resolution * 1000000) / (((double)imgInput.Height) * (double)imgInput.Width)) * (double)imgInput.Width); int overlaysize = Convert.ToInt32((double)width * 0.2); int padding = overlaysize + (resolution * 10); imgInput.Resize(width, height) .Blend(imgOverlay.Resize(overlaysize, overlaysize).Pad(padding, padding), 80) .Save(output); outputfile.Data = output.ToArray(); outputfile.FileName = sourcefile.FileName; } return(outputfile); }
public async Task <FileUploadResult> HandleUpload(string fileName, Stream inputStream) { var dtoImages = new DtoImage(); var bytes = new byte[16 * 1024]; using (var memoryStream = new MemoryStream()) { int count; while ((count = inputStream.Read(bytes, 0, bytes.Length)) > 0) { memoryStream.Write(bytes, 0, count); } dtoImages.Data = memoryStream.ToArray(); } dtoImages.FileName = fileName; return(new FileUploadResult { Identifier = await SaveMessageObject(dtoImages) }); }