ASP.NET MVC Resim Küçültme
26.04.2020 14:41
#ASP.NET #MVC #RESIZE
ASP.NET MVC Resim Küçültme
Yaptığımız projelerin neredeyse tamamında kullanıcılardan birçok sayfada resim yüklemelerini istiyoruz. Bu resim yükleme işlemleri sırasında ise kullanıcların yüksek boyutlu resim dosyaları yüklemeleri hem projelerin hızını, hem de depolama alanımızı olumsuz yönde etkiliyor. Bu durumda ASP.NET MVC de resim küçültme işlemi için yazdığım fonksiyon kullanılabilir. Bu sayede resim boyutu küçültme işlemi kolayca halledilmiş olur.
Aşağıda verdiğim fonksiyon ile bu işlemi kolayca yapabilirsiniz.
public string resimKucult(byte[] byteDizi, Stream stream, string dizin) { /****************** * * Tarih: 25.04.2020 * Yazan: Yavuz ÇELİKER * Email: yavuz@yavuzceliker.com.tr * Amaç: Projeye yüklenen resimlerin resize edilmesini sağlayan fonksiyon. * * Parametre olarak alınan değişkenlerin tanımı * byteDizi: Bu değişken ile byte dizisi olarak çözümlenmiş resim dosyalarınızı küçültebilirsiniz. * stream: Bu değişken ile HttpPostedFileBase kullanarak aldığınız resimlerinizin inputStream özelliğini göndererek boyutunu küçültebilirsiniz. * dizin: Bu değişken ise resminizin kaydedileceği klasör yolunu tutuyor. * * Not: byteDizi veya stream değişkenlerinden birinin gönderilmesi yeterlidir diğeri null döndürülebilir. * *******************/ if (byteDizi != null || stream != null) //değişkenlerden en az birisinin dolu olduğunu kontrol ediyoruz. { try //try ile olası bir hata durumunda fonksiyonun patlaması yerine bir hata döndürmesini sağlıyoruz. { WebImage resim = byteDizi == null ? new WebImage(stream) : new WebImage(byteDizi); // Bu alanda parametre olarak aldığımız değişkenlerden dolu olanı bir WebImage haline getiriyoruz. if (resim.Width > 1000) //Ben resimlerimin boyutunu 1000px ile sınırlandırdım. Siz dilediğiniz çözünürlüğü verebilirsiniz. Burada width değerini kontrol ediyoruz. resim = resim.Resize(1000, 1000, preserveAspectRatio: true); else if (resim.Height > 1000)//Width değeri 1000den küçükse height değerini kontrol ediyoruz. Eğer iki koşul da sağlanmazsa zaten küçük bir resim olduğu için bir işlem yapmıyorum. resim = resim.Resize(1000, 1000, preserveAspectRatio: true); string resimAdi = DateTime.UtcNow.AddHours(3).ToString("yyyyMMddHHmmss")+"."+resim.ImageFormat; //Kaydedilecek resim için anlık tarihi bir resim adı olarak kaydediyorum. if (!Directory.Exists(Server.MapPath(dizin))) // Dizinin var olup olmadığını kontrol ediyorum. { Directory.CreateDirectory(Server.MapPath(dizin)); //Dizin yoksa oluşturuyorum. } resim.Save(Server.MapPath(dizin + resimAdi), resim.ImageFormat, false); // Ve resim dosyamızı kaydediyoruz. return dizin + resimAdi; // resim yolumuzu döndürüyoruz. } catch (Exception hata) { //Catch kısmı tamamen özelleştirilebilir hata durumunda ne yapmasını dilerseniz o şekilde bir uyarı döndürebilirsiniz. mail.MailGonder("yavuz@yavuzceliker.com.tr", "Resim Yükleme Hatası", hata.ToString()); return "hata"; } } else return "hata"; }