Asp.Net sayfalarımızın daha hızlı yüklenmesi için sayfamızda yer alan resimlerin boyutlarını mümkün olduğunca küçük tutmaya çalışırız. Örneğin bir ürün sayfası listelediğimizi düşünelim. Önce kullanıcıya küçük resim gösterilir. Kullanıcı bu resme tıkladığı veya üzerine geldiği zaman resmin büyük halini gösteririz. Ama bu iki işlemde de imagein src properytsine aynı büyük resmi verirsek aynı resmi iki defa çağırmış olacağız. Ve iki işlemde de büyük resim gösterildiği için sayfamızda bir performans kaybı gerçekleşecektir. Bu yüzden resimlerimizi barındırdığımız klasör içerisine "Thumbs" adında bir klasör açarak küçük resimleri burada tutup, ilk gösterimde bu resimleri kullanabiliriz. Daha fazla karıştırmadan işlemimize geçelim.
Bu işlem için "GetThumbs()" adında bir metod oluşturdum. Bu metod önce orjinal resmi alıyor. Verdiğimiz genişliğe göre, resmin yüksekliğini "BOZULMADAN" ayarlıyor. Ve verdiğimiz adrese resmi kaydediyor. Metodun tümünü aşağıdan inceleyebilirsiniz.
GetThumbs() ve Bu metod için gerekli olan MethodForThumbs() Metodu:
public void GetThumb(int genislik, string dosyaIsmi,string orjinalResim)
{
// verdiğim orjinalResim değişkeni içerisindeki adresten yeni bir resim getiriyorum.
System.Drawing.Image image = System.Drawing.Image.FromFile(orjinalResim);
// aldığım genişlik değerini 100 ile çarpıp, resmin genişliğine bölerek verdiğim genişliğe göre
// resmin yüzde kaç küçüldüğünü buluyorum.
int yuzdeKacKuculuyo = genislik * 100 / image.Width;
int yukseklik = (image.Height * yuzdeKacKuculuyo / 100);
System.Drawing.Image thumbnailImage = image.GetThumbnailImage(genislik, yukseklik, new Image.GetThumbnailImageAbort(MethodForThumb), IntPtr.Zero);
thumbnailImage.Save(ConfigurationSettings.AppSettings["imageFolder"].ToString() + "\\Thumbs\\" + dosyaIsmi);
}
public bool MethodForThumb()
{
return false;
}
Şimdi dilerseniz ufaktan, metodumuzu açıklayalım. Önce kullanıcıdan yeni genişlik değerini, yeni dosya ismini ve orjinal resim dosyasını istiyoruz. Daha sonra kullanıcıdan aldığımız resim ile yeni bir resim oluşturuyoruz..Bu işlemden sonra kullanıcıdan aldığımız genişlik değerine göre, yeni resmin genişliğinin yüzde kaç küçüldüğünü buluyoruz.Çünkü genişlik ne kadar küçüldüyse, yükseklik de o kadar küçülmeli ki resmin boyutlarında dengesiz bir değişme olmasın. Bu yüzdelik genişlemeyi dikkate alarak yüksekliğide bu yüzde oranına göre ayarlıyoruz.
Resmin genişliğinin ve yüksekliğinin hesaplanması:
int yuzdeKacKuculuyo = genislik * 100 / image.Width;
int yukseklik = (image.Height * yuzdeKacKuculuyo / 100);
Daha sonra GetThumbNailImage() metoduna belirlediğimiz parametreleri vererek küçük resmimizi oluşturuyoruz. MethodForThumb() metodunu GetThumbNailImage() metoduna bir parametre vermek için oluşturduk.Son satırda ise save metodu ile App.Config dosyamda sakladığım resimler klasörü içerisinde bulunan Thumbs klasörüne verdiğim dosya ismi ile küçük resmimizi kaydediyoruz.
Metod hatasız çalışmaktadır. Yapmanız gereken parametreleri doğru vermek ve App.Config dosyasından çektiğim hedef klasörü kendinize uygun bir biçimde ayarlamak.