Asp.net Resim Upload ve Resim Boyutlandırma.

Kodla Büyü

noktanet

Seçkin Üye
Seçkin Üye
Mesajlar
737
Özellikle haber ekleme konusunda resimleri standart bir formatta orantısı şekli bozulmadan sunucuya kayıt işlemini anlatmaya çalışacağım.
Şimdi bir web form oluşturalım ve içerisine toolbox'dan fileupload kontrolü, textbox ve bir buton ekleyelim.

Ben fileupload kontrolünün adını fuResim, Textbox adını ise txtResimAdi olarak değiştirdim.

Butonumuzun click eventine gelerek aşağıdaki kodları yazıyoruz.
Kod:
code kısmında 
using System.IO;
using System.Drawing;
tanımlamalarını yapıyoruz. 

string resimadi = ""; // veri tabanına ekleyebilmek için kullanacağımız isim için oluşturduğumuz değişken.
string uzanti = ""; // seçilen resmin uzantısını tutmak için kullandığımı değişken.

//Öncelikle if ile resim seçilip seçilmediğini kontrol ederek başlıyoruz.
  if (fuResim.HasFile) //resim seçili ise anlamına geliyor.
        {
            uzanti = Path.GetExtension(fuResim.PostedFile.FileName); // seçilen resmin uzantısını alıyoruz bu kodla
            resimadi = Ayarlar.UrlSeo(txtResimAdi.Text) + "_fotoresim_" + DateTime.Now.Day + uzanti; // resim adı belirliyoruz. burda Ayarlar fonksiyon dosyası 
            // benim kendi oluşturduğum bir dosya türkçe karakterleri düzenlemek için kullanıyorum. siz resim adını istediğiniz şekilde düzenleyebilirsiniz.
            // resim üzerinde boyutlandırma yapacağımız için. proje dosyamıza sahte isminde aynı uzantıda bir dosya oluşturuyoruz. aşağıdaki kod ile

            fuResim.SaveAs(Server.MapPath("../FotografAlbumu/Sahte" + uzanti));

            int Donusturme = 800; // Ben resimlerimi 800 genişliği sabit olacak şekilde düzenleyeceğim için Donusturme değişkenine 800 ü atadım siz hangi boyutta kayıt etmek istiyorsanız ona göre bir değer girebilirsiniz. 
           // aşağıdaki kodlarla devam ediyoruz.
            Bitmap bmp = new Bitmap(Server.MapPath("../FotografAlbumu/Sahte" + uzanti));  // kayıt ettiğimiz dosyayı bir bitmapa atıyoruz.
            using (Bitmap orjinalresim = bmp)
            {
                double ResYukseklik = orjinalresim.Height; // kayıt ettiğimiz resmin yüksekliğini alıyoruz.
                double ResGenislik = orjinalresim.Width; // kayıt ettiğimiz resmin genişliğini alıyoruz.
                double oran = 0; // resimlerde oran kaybını önlemek için 0 olarak belirliyoruz.
                if (ResGenislik >= Donusturme) // orjinal resmin genişliği 800 den yani donusturme oranından büyükse.
                {
                    oran = ResGenislik / ResYukseklik;
                    ResGenislik = 800;
                    ResYukseklik = Donusturme / oran;
                    Size YeniDegerler = new Size(Convert.ToInt32(ResGenislik), Convert.ToInt32(ResYukseklik));
                    Bitmap YeniResim = new Bitmap(orjinalresim, YeniDegerler);
                    // yukardaki matematiksel işlemlerle yeni boyutları belirliyoruz.
                    YeniResim.Save(Server.MapPath("../FotografAlbumu/" + resimadi)); // yeni boyutlarıyla belirttiğimiz dosyaya resim kaydedilir.
                    orjinalresim.Dispose(); 
                    bmp.Dispose();
                    YeniResim.Dispose();


                }
                else // orjinal resmin genişliği 800 den küçük ise boyutlandırma yapılmıyor ve direk kayıt ediliyor.
                {
                    fuFoto.SaveAs(Server.MapPath("../FotografAlbumu/" + resimadi));
                }


            }

umarım faydalı olur . iyi çalışmalar.
 
veri tabanı kayıt işlemini göstermedim. resimadi değişkenini veri tabanına ekleyerek kullanabiliriz. kusura bakmayın bir hata yaptıysam affola. ama çalışıyor sanırım. :)
 
Geri
Üst