using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;
Yukarıdaki namespace alanlarını sayfanızın en üstüne yapıştırınız. Bitmap veya FileInfo gibi sınıflar bu namespace alanları içerinde tanımlanmıştır.
protected void AsyncFileUploadIlan_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{
AsyncFileUploadIlan.SaveAs(Server.MapPath("~/Resimler/" + AsyncFileUploadIlan.FileName)); // dosyayı geçici olarak ilgili klasöre kaydediyoruz
ResimBoyutlandir(); // metodumuzu çağırıyoruz
}
private void ResimBoyutlandir()
{
using (Bitmap OriginalBM = new Bitmap(Server.MapPath("~/Resimler/" + AsyncFileUploadIlan.FileName))) // geçici olarak kaydettiğimiz resmi getiriyoruz
{
Size newSize = new Size(300,300); // resmin boyutunu ayarlıyorum
Bitmap Resizebm = new Bitmap(OriginalBM, newSize); // boyutlandırılmış Bitmap
// resmimi oluşturuyorum
Resizebm.Save(Server.MapPath("~/Resimler/ilan/" + AsyncFileUploadIlan.FileName)); // resmi istediğim klasöre kaydediyorum
OriginalBM.Dispose();
}
FileInfo fi = new FileInfo(Server.MapPath("~/Resimler/" + AsyncFileUploadIlan.FileName));
fi.Delete(); // geçici olarak kaydettiğim resmi siliyorum
}
Yukarıdaki metodumuz kullanacağız. Bu metodu kullanmak istediğiniz sınıfın içerisine yapıştırınız. Burada klasör adlarını uygulamanıza göre değiştirmeniz gerekiyor. Ayrıca yazmak istediğiniz klasörlerde de yazma izninin verilmiş olması gerekiyor. Aksi takdirde hata ile karşılaşırsınız.
Ben burada genişliği : 300 px ve yüksekliği : 300 px olan bir resim boyutu tanımladım. Siz bu boyutu istediğiniz gibi belirleyebilirsiniz. Burada önemli bir nokta var. Peki resmimizin boyutu bu değerlerden küçükse ne olacak ? Sorunun cevabı oldukça basit aslında. Elbette ki bu sefer tam tersi resmin boyutunu büyültecek. Eğer bunun olmasını istemiyorsanız, yani resminizin eni ve boyu belli bir değerden küçükse boyutlandırma yapmadan kaydetmek istiyorsanız yukarıdaki kodlarda biraz değişiklik yapmak gerekiyor:
{
ResimBoyutlandir(); // metodumuzu çağırıyoruz
}
{
using (Bitmap OriginalBM = new Bitmap(Server.MapPath("~/Resimler/" + AsyncFileUploadIlan.FileName)))
{
if (OriginalBM.Width > 300 || OriginalBM.Height > 300)
{
Size newSize = new Size(300, 300);
Bitmap Resizebm = new Bitmap(OriginalBM, newSize);
Resizebm.Save(Server.MapPath("~/Resimler/ilan/" + AsyncFileUploadIlan.FileName));
OriginalBM.Dispose();
}
}
}
Dikkat : Dosyamızı geçici olarak kaydettiğimiz klasör ile kalıcı olarak kaydettiğimiz klasör farklı olmalı yoksa hata mesajı ile karşılaşırsınız.
İLGİLİ BAĞLANTILAR: