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…

Bunlar da hoşunuza gidebilir...

7 Cevaplar

  1. OMAR dedi ki:

    ula bunu çalmasınlar diye yazıyonda biz nasıl copy/aste yapıcaz

  2. gokhan dedi ki:

    bı *** yaramıyo kodlar. *** *** kodun bı kısmını alıp koyuyosunuz buraya baska sıtelerden…. hepiniz ***

  3. Mert dedi ki:

    Kodlar işime yaradı teşekkür ederim ama hangi kütüphanelerin gerekli olduğunu da yazarsanız daha faydalı olacaktır.

    • Gençay dedi ki:

      Eğer ki Visual Studio kullanıyorsanız CTRL + .(nokta) kombinasyonu ile ilgili sınıfların hangi kütüphanelerde bulunduğunu görebilir ve “using” edebilirsiniz.

  4. Ozzy dedi ki:

    selam önelikel paylasım için teşekkürler mükemmel calsıyor ve kütüp hane soran arkadaşlarda buyursun isimlerini
    using System.Drawing;
    using System.Drawing.Imaging;
    using System.IO;

    Yanlız burada db ye kayıt için hangi stringi nasıl kullanalım
    yani mesela string xxxphoto = ?

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*

Copy Protected by Chetan's WP-Copyprotect.