public class Resim : IHttpHandler
{
  public bool IsReusable { get { return false; } }
 
  public void ProcessRequest(HttpContext context)
  {
    Image image = Image.FromFile(HttpContext.Current.Server.MapPath("~/istatistik.png"));
    Bitmap sayac = yaz(image, image.Width, image.Height, new List<string>() { "1. Değer", "2. Değer", "3. Değer" }, 8);
    MemoryStream ms = new MemoryStream();
    sayac.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
    byte[] r = ms.GetBuffer();
    image.Dispose();
    context.Response.Clear();
    context.Response.ContentType = "image/png";
    context.Response.BinaryWrite(r);
    context.Response.End();
  }
 
  // Kullanacağımız Metot
  private static Bitmap yaz(Image resim, int genislik, int yukseklik, List<string> yazilacak, float font)
  {
    Bitmap resmim = new Bitmap(resim, genislik, yukseklik);
    Graphics graf = Graphics.FromImage(resmim);
    SolidBrush firca = new SolidBrush(Color.Black);
    Font fnt = new Font("tahoma", font); // kullanılan font ve büyüklüğü.
    SizeF size = new SizeF(0, 15); // yazılacak metin için belirlenecek alanın büyüklüğü.
    PointF coor;
    RectangleF kutu;
    StringFormat sf = new StringFormat();
    sf.Alignment = StringAlignment.Center;
    int i = 7;
    foreach (string deger in yazilacak)
    {
      coor = new PointF(72, i); // yazılacak metinin koordinatları;.
      kutu = new RectangleF(coor, size); // yazılacak metinin konumunu belirtiyoruz.
      graf.DrawString(deger, fnt, firca, kutu, sf); // metnimizi yazdırıyoruz.
      i += 15; // her metnin yukarıdan olan uzaklığını artırmak için bu değeri tutuyoruz.
    }
    return resmim;
  }
}