Yazılım Mimarileri ve Tasarım Desenleri Üzerine

Asp.NET FileUpload İle Seçilen Resmin Boyutunu Küçültme

Asp.NET projelerinde, genellikle CSS ile tasarım kısmını önceden halledip sonra programatik kısma geçiş yaparız.Nerde neyin hangi boyutta, gözükecek resimlerin hangi genişlikte olacağını genellikle CSS imizde belirtiriz.Hal böyleyken programatik olarak seçip eklediğimiz resimlerin boyutları bizim CSS imizle uyumlu olamayabiliyor.Bu durumda resmimizin gösterileceği alandaki “<img ..” etiketinin “width” ve “height” taglarının değerlerini istediğimiz boyutta ayarlayıp, bu yolla görsellik durumunu çözmüş oluruz.Ancak performans kaybına veya görüntü bozukluğuna sebep olabilir.

Yüklediğimiz resmimizin genişlik ve yükseklik değerleri, ayarladığımız değerlerden küçükse eğer, bu resim büyütülmüş olarak gösterilecektir ve görüntü kalitesi son derece düşecektir.(Bu yazıda genişlik ve yükseklik değerleri sabit alınacağı için, bu durumun çözümünden bahsedilmemektedir.)
Diğer durumda ise, yüklediğiniz resim ayarlanan genişlik ve yükseklik değerinden büyük ve ağır boyutta bir resim ise, görüntü bozukluğuna uğramasanızda müthiş bir performans kaybına uğrarsınız.Hatta, interneti yavaş olan kullanıcılarda web siteniz yavaş açılacak ve hatta kullanıcı kaybına bile sebep olacaktır.Ayriyetten hostingimizin şişmesinede sebep olacaktır.İşte bu durumda FileUpload nesnesiyle seçilecek olan resmin ya Photoshop vs. gibi editörlerle boyutunu ayarlayıp servera atmak zorunda kalırız ya da programatik olarak otomatik bir şekilde resmin boyutunu ayarlatabilriz.

Şimdi bu işlemin nasıl yapılacağına göz atalım.

 if (FileUpload1.HasFile)
        {
            if (Path.GetExtension(FileUpload1.PostedFile.FileName) == ".jpg" || Path.GetExtension(FileUpload1.PostedFile.FileName) == ".png")
            {
                Random rstgele = new Random();
                string ResimUzantisi = Path.GetExtension(FileUpload1.PostedFile.FileName);
                string ResimAdi = FileUpload1.PostedFile.FileName + rstgele.Next(99999999, 999999999) + ResimUzantisi;
                //Geçici olarak FileUpload nesnemizdeki resmi Resimler dizinine kayıt ediyoruz.
                FileUpload1.SaveAs(Server.MapPath("~\\Resimler\\") + ResimAdi);
                //Şimdi ise bu kayıt ettiğimiz resmi Bitmap nesnesi şeklinde alıyoruz.
                Bitmap Resim = new Bitmap(Server.MapPath("~\\Resimler\\") + ResimAdi);
                int Genislik = 262;
                int Yukseklik = 110;
                //Boyutlarını veriyoruz.
                Size Boyut = new Size(Genislik, Yukseklik);
                //Resmi boyutlandırıyoruz.
                Bitmap BoyutlandirilmisResim = new Bitmap(Resim, Boyut);
                string BoyutlanmisKayit = "~\\Resimler\\BoyutluResimler\\" + ResimAdi;
                //Boyutlanmış resmi Resimler/BoyutluResimler dizinine kayıt ediyoruz.
                BoyutlandirilmisResim.Save(Server.MapPath(BoyutlanmisKayit), ImageFormat.Jpeg);
                Resim.Dispose();
                BoyutlandirilmisResim.Dispose();
                //Geçici olarak kaydedilen resmi siliyoruz.
                FileInfo IlkResimDosyasi = new FileInfo(Server.MapPath("~\\Resimler\\") + ResimAdi);
                IlkResimDosyasi.Delete();
            }
            else
            {
                Label1.Text = "Lütfen .jpg ve .png uzantılı dosya seçiniz.";
            }

        }

İyi çalışmalar…

Mobil sürümden çık