ASP.net MVC dynamically create and return image from Controller
I've found that I have a need to create an image dynamically (or read from a file) and return it directly from a controller. We can do that pretty easily.
First add this method to a controller:
Now you in an image tag set the src property to your controllers action as follows:
First add this method to a controller:
public class ImageController : Controller
{
public void Generate()
{
try
{
//when we create a pixel we need to make it a random color
Random randomGen = new Random();
Bitmap image = new Bitmap( width, height );
// create the graphics drawing tool
using ( Graphics gfx = Graphics.FromImage( image ) )
// create a solid brush to draw the image, I'm using random colors
using ( SolidBrush brush = new SolidBrush( Color.FromArgb( randomGen.Next( 255 ),
randomGen.Next( 255 ),
randomGen.Next( 255 ) ) ) )
{
gfx.FillRectangle( brush, 0, 0, width, height );
}
// save the image to a memory stream
MemoryStream ms = new MemoryStream();
pixel.Image.Save( ms, ImageFormat.Jpeg );
ms.Position = 0;
// send the image back
return new FileStreamResult( ms, "image/jpeg" );
}
catch(Exception ex)
{
Console.WriteLine( ex.ToString() );
}
}
}
Now you in an image tag set the src property to your controllers action as follows:
img src="@Url.Content("~/ImageController/Generate")"
Comments