// // GET: /Benchmark/ public ActionResult Index() { var message = "\nReduced images sizes:\n\n"; var lastByteSize = 0L; var demoModel = new DemoModel(); var imageGenerator = new ImageGenerator(); var bitmap = imageGenerator.GenerateDemoImage(Server.MapPath("~/Images/"), demoModel.IconName, demoModel.ForecastText); //un-reduced size using (var ms = new MemoryStream()) { bitmap.Save(ms, ImageFormat.Png); message += string.Format("Unreduced size was {0} bytes.\n\n", ms.Length); } //calculate the size of each reducers output png image foreach (var reducer in demoModel.PngColorReducers) { IPngColorReducer colorReducer = PngColorReducerFactory.GetReducer(reducer); var pngStream = colorReducer.ReduceColorDepth(bitmap); lastByteSize = pngStream.Length; message += string.Format("{0} size was {1} bytes.\n\n", reducer, lastByteSize); } bitmap.Dispose(); ViewData["Message"] = message; return View(); }
public FileResult Show(ImageModel imageModel) { var imageGenerator = new ImageGenerator(); MemoryStream pngStream; using (var bitmap = imageGenerator.GenerateDemoImage(Server.MapPath("~/Images/"), imageModel.Icon, imageModel.Text)) { IPngColorReducer colorReducer = PngColorReducerFactory.GetReducer((PngColorReducers)imageModel.Id); pngStream = colorReducer.ReduceColorDepth(bitmap); } return new FileStreamResult(pngStream, "image/png"); }