Günümüzde birçok sitede, resimlerin üzerinde sitelerin logoları ya da isimleri görülmektedir. Sitede bulunan yüzlerce resmin tümüne aynı logoyu veya yazıyı site editörünün bir grafik programını kullanarak eklemesi oldukça zahmetli ve uzun bir işlemdir. Sitedeki resimlerin sürekli olarak güncellendiğini de düşünürsek yeni eklenen resimlerin üzerinde de bu işlemlerin yapılması işleri daha da zorlaştıracaktır. Dolayısıyla bu tip işlemleri kodla çözmek hem basit bir çözüm olacak hem de sitenin işleyişini hızlandıracaktır.
Graphics sınıfıyla, bir kaç basit adımda resimlerin üzerine yazı yazma ve resim dosyası eklenmesi mümkündür. Graphics sınıfından oluşturulacak olan bir nesneninDrawString metoduyla resmin üzerine string değerleri yazdırılabilir, DrawImage metoduyla da bir resim dosyasının eklenmesi sağlanabilir.
Uygulama
Aşağıdaki uygulamada bu metotların kullanım şekli görülmektedir. Bu örnekte resmin URL'si(Uniform Resource Locator - Tekdüzen Kaynak Bulucu) ve resmin üzerine yazılmak istenen yazı girilir ve Resmi işle düğmesine tıklanır.
Bu düğmenin Click Event’i (tıklama olayı) ise aşağıdaki gibidir.
protected void btn_Resim_Click(object sender, EventArgs e)
{
try
{
Bitmap resim = new Bitmap(new System.Net.WebClient().OpenRead(Tb_ResimUrl.Text));
Graphics g = Graphics.FromImage(resim);
g.SmoothingMode = SmoothingMode.Default;
g.DrawString(Tb_ResimYazi.Text, new Font("Consolas", 26, FontStyle.Bold), new SolidBrush(System.Drawing.Color.White), 10, 120);
System.Drawing.Image img = System.Drawing.Image.FromFile(Server.MapPath("~/logo-itu.png"));
g.DrawImage(img, 15, 10, 90, 100);
Response.ContentType = "image/jpeg";
resim.Save(Response.OutputStream, resim.RawFormat);
}
catch
{
Response.Write("HATA ¿");
}
}
Yukarıdaki uygulamada öncelikle resim dosyası Graphics türünden bir nesne oluşturmak için kullanılmıştır.
DrawString metodu parametre olarak eklenmek istenen yazıyı, yazı ile ilgili biçimsel değerleri ve yazının eklenmek istendiği konum bilgilerini alır.
DrawImage metodu ise parametre olarak, System.Drawing.Image türünden bir nesne olarak eklenilmek istenen resmi ve resmin eklenmek istediği konum bilgilerini alır.
Dikkat edilmesi gereken bir husus da, System.Drawing ve System.Drawing.Drawing2D isim uzaylarının (namespace) projeye dahil edilmesidir.
Aşağıda resmin ilk hali ve bu kod çalıştırıldığında resmin üzerinde gerçekleşen değişiklikler verilmiştir. Metin kutularına işlem yapılacak resmin url'si ve resmin üzerine yazdırılmak istenilen katar değeri girilmiştir.