Bu yazımda C# kullanarak resim, fotoğraf üstüne çoklu metin yazdırmayı göstermeye çalışacağım
- Yazılım Uzmanları
- 13 Mayıs 2018
- 1501 kez görüntülendi.
Asp.net ile Resim Üzerine Çoklu Yazı Yazma
(Generic Handler ile de Gösterme)
Bu yazımda C# kullanarak resim, fotoğraf üstüne çoklu metin yazdırmayı göstermeye çalışacağım. Bu metodu geliştirerek çok daha kapsamlı çok daha esnek bir resim üzerine yazı yazma editörü hazırlayabiliriz. Bunu da fırsat bulduğumda jQuery ve Ajax kullanarak hazırlamayı düşünüyorum. Şimdi hazırladığım örneğe ve kodlarına bakalım.
Öncelikle yazmış olduğum metodu ve üzerine yazı yazdırdığımız resmi görüntülemek için yazdığımız (generic handler) kodları paylaşmak istiyorum. Bu kodlar şöyle olmalı:
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; } }
Bu kodlar içindeki verileri veritabanından veya başka bir kaynaktan alarak oluşturursak dinamik bir yapı olmuş olur. Resim üstünde gelişmiş raporlamaları bu şekilde hazırlayabiliriz. Haber sitelerinde veya bloglarda kullanılan online editörler gibi editörler hazırlayabiliriz. Böyle bir editörü fırsat bulduğumda Ajax ve jQuery kullanarak tamamen dinamik biçimde oluşturmayı düşünüyorum. Ayrıca metot üzerinde değişimler yaparak görselliği artırabiliriz.
İyi Çalışmalar.
Bu yazıya 0 yorum yapılmış.