Makale Özeti

İçinde 100 den fazla resim bulunan bir web projesi tamamladığınızı düşünün. Her şey gayet düzgün çalışıyor hiçbir hata yok. Projenin son aşamasında sizden tüm resimlere herhangi bir metin eklemeniz isteniyor. Daha da güzel bir istek geliyor ve bu metni istedikleri zaman değiştirebilmeleri gerektiğini söylüyorlar. Pek başınıza gelicek bişey değildir ama uzun bi çaba gerektiricek olan bu işlemi IHttpHandler interface i kullanarak 1 dk gibi kısa bir sürede halledebilirsiniz.

Makale

 

Yapılacak işlemler ;

  • IHttpHandler interfacini kullanan yeni bir sınıf oluşturulur.
  • Web.Config dosyası düzenlenir. <httpHandlers />
  • IIS üzerinde handlerimiz için gerekli düzenleme yapılmalı.

 

 

Projenize ImageHandler isminde yeni bir sınıf ekleyin.

 

ImageHandler.cs

 

using System.Drawing;

using System.Drawing.Imaging;

using System;

 

namespace IHttpHandlerDemo

{

     

      public class ImageHandler : System.Web.IHttpHandler

      {

            public ImageHandler() { }

 

            #region IHttpHandler Members

 

            public void ProcessRequest(System.Web.HttpContext context) {

 

                  // bulunduğunuz sayfanın segmentleri bir diziye alınır.

                  string[] segments = context.Request.Url.Segments;

                 

                  // segmentin son elemanı alınır (örnek : dosyaadı.jpg)

                  string imgName = segments[segments.Length -1];

 

                  // Image sınıfının fromFile methodu kullanılarak imaj oluşturulur.

                  System.Drawing.Image img = Image.FromFile(context.Server.MapPath(imgName));

 

                  // Graphics sınıfının FromImage metodu ile Graphics sınıfı oluşturulur.

                  Graphics g = Graphics.FromImage(img);

 

                  // Graphics sınıfı kullanılarak resmimize yazı yazıyoruz.

                  g.DrawString("deneme",new Font("Verdana",12),Brushes.Black,new PointF(1,1));

 

                  // Graphics ile düzenlediğimiz imajımızı kaydediyoruz.

                  img.Save(context.Response.OutputStream,ImageFormat.Jpeg);

            }

 

            public bool IsReusable {

                  get

                  {                      

                        return false;

                  }

            }

 

            #endregion

      }

}

 

 

Web.Config

 

<system.web>

 

    <httpHandlers>

            <add verb="*"

path="*.jpg"

type="IHttpHandlerDemo.ImageHandler,IHttpHandlerDemo" />

    </httpHandlers>

 

 

</system.web>

 

IIS KONFİGURASYONU

Web projemiz üzerinde sağ tıklatıp özelliklere girin.




Executable : C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll
Extension  : .jpg


 

Tamam dedikten sonra projemize resim ekleyip geri kalan işlemi handlerimiza bırakın J


Cem ŞİŞMAN - [MCSD.Net]
cem.sisman@bilgeadam.com