<img src="imagegen.ashx?shape=circle&color=red">
<httpHandlers> <add verb="*" path="ImageGen.ashx" type="ImageGen, DynaImageLib" /> </httpHandlers>
When an HTTP request arrives for ImageGen.ashx, ASP.NET instantiates ImageGen and passes it the request. Assuming ImageGen is an image generator, it responds by creating an image and returning it in the HTTP response. Here’s a generic template for an HTTP handler that creates an image in memory and returns it to the requestor as a JPEG. The hard part—building the image and writing it out to the HTTP response as a JPEG-formatted bit stream—is vastly simplified by the FCL’s Bitmap and Graphics classes:
public class ImageGen : IHttpHandler { public void ProcessRequest (HttpContext context) { // Create a bitmap that measures 128 pixels square Bitmap bitmap = new Bitmap (128, 128, PixelFormat.Format32bppArgb); // Create a Graphics object for drawing to the bitmap Graphics g = Graphics.FromImage (bitmap); // TODO: Use Graphics methods to draw the image . . . // Set the response's content type to image/jpeg context.Response.ContentType = "image/jpeg"; // Write the image to the HTTP response bitmap.Save (context.Response.OutputStream, ImageFormat.Jpeg); // Clean up before returning bitmap.Dispose (); g.Dispose (); } public bool IsReusable { // Returning true enables instances of this class to be // pooled and reused. Return false if ImageGen instances // should NOT be reused. get { return true; } } }