Başlık biraz abes kaçtı ama Türkçe ye çevirince ancak bu kadar olabiliyor :) Eğer arama motorlarında arama gereği duyarsanız “watermark” ismi ile ararsanız bir çok örnek çıkıcaktır karşınıza.
Ufak projelerde pek gereksinim duymasak da büyük ve dinamik projelerimizde işimizi çok ama çok kolaylaştırdığını rahatlıkla söyleyebilirim.
Bu yazımda sizlere Asp.net ile bir fotoğrafın üzerine istediğimiz bir yazıyı nasıl dinamik bir şekilde yazabileceğimizi anlatmaya çalışıcam.

Öncelikle projemizde bir images klasörü olduğunu düşünelim ve bu klasör içerisinde test.jpg adında bir adet fotoğrafımız var.Biz bu fotoğrafı Default.aspx sayfamızda göstericez,siz farklı sayfa da kullanabilirsiniz.

Default.aspx sayfamız basitçe şu şekilde olsun;

 1: <body>
 2: <form id="form1" runat="server">
 3: <img src="images/test.jpg" />
 4: </form>
 5: </body>

Gördüğünüz gibi basitçe bir resim yerleştirdik sayfamıza.Design görünümünde sayfamız şu şekilde olucak;

watermark1 


Şimdi ise bu Projemize bir adet daha sayfa ekleyelim ve ismine watermark ismini verelim.Siz farklı bir isimde verebilirsiniz.Bu sayfamızı fotoğrafımızın üzerine yazı yazmak için kullanıcaz.Watermark.aspx sayfamızın design kısmında herhangi bir işlem yapmıycaz.İşimiz bu sayfanın code behind tarafında;yani watermark.aspx.cs dosyasında.Watermark.aspx.cs dosyamızın içeriği ise şöyle;

 1: protected void Page_Load(object sender, EventArgs e)
 2: {
 3: ImageWatermark();
 4: }
 5: private void ImageWatermark()
 6: {
 7: string fotopath=Request.QueryString.Get("Image").ToString();
 8: Bitmap foto = new Bitmap(AppDomain.CurrentDomain.BaseDirectory+fotopath);
 9: Graphics grap = System.Drawing.Graphics.FromImage(foto);
 10: SolidBrush firca = new SolidBrush(Color.FromArgb(70, 255, 255, 255));
 11: Font yazitipi = new Font("Verdana", 20);
 12: PointF coor = new PointF(0, 0);
 13: grap.DrawString("ByBugu", yazitipi, firca, coor);
 14: foto.Save(this.Context.Response.OutputStream, ImageFormat.Jpeg);
 15: }

Watermark.aspx.cs dosyamıza ayrıca şu namespace leri de eklemeyi unutmayın;

using System.Drawing;

using System.Drawing.Imaging;

Kısaca anlatmak gerekir ise;

Page_Load kısmındandan ImageWatermark isimli methodumuzu çalıştıryoruz.Bu method da ise;

Querystring ile gelen fotoğrafımızın yolunu bir Bitmap nesnesine atıyoruz.Yolu atarken fiziksel path gerektiğinden AppDomain.CurrentDomain.BaseDirectory ifadesini kullanıyoruz.

Graphics nesnemize bitmap nesnemizden referans veriyoruz.Diğer satırlarda ise anlaşıldığı üzere fırça,font ve koordinat işlemlerimizi yapıyoruz.

grap.DrawString("ByBugu", yazitipi, firca, coor); Kısmında yazılı olan ByBugu ifadesi yerine siz fotoğrafınızın üzerine ne yazmak istiyor iseniz onu yazıyorsunuz.En son satırda ise Bitmap nesnemizi save ediyor ve ekrana bastırıyoruz.

Şimdi ise oluşturduğumuz watermark.aspx sayfamzla fotoğrafımızı çağırmayı deneyelim.Default.aspx sayfamıza geçiyoruz;

 1: <body>
 2: <form id="form1" runat="server">
 3: <img src="watermark.aspx?Image=images/test.jpg" />
 4: </form>
 5: </body>

Sayfamızı bu şekilde düzenleyip çalıştırdığımızda ekranımızda fotoğrafımızın üzerine belirtmiş olduğumuz yazımızın yazıldığını görüceksiniz.

watermark2

İşte hepsi bu kadar.Aslında bu yöntemi ben pek kullanmıyorum.Daha çok IhttpHandler yöntemini tercih ediyorum.Bu yöntemi daha iyi anlamanız açısından yazdım.Sonra ki yazılarımda IhttpHandler yöntemi ile nasıl yapıldığını,daha daha sonra ki yazımda ise bir dizin altında ki tüm fotoğraflara dinamik bir şekilde bu uygulamanın nasıl uygulandığını anlatıcam.

Hepinize .Net li günler dilerim.

Örnek Proje yi indirmek için burayı tıklayınız.

Technorati Etiketleri: ,,