Merhabalar. Bu makalemizde asp.net c# ile resim boyutlandırmadan bahsedeceğiz.
Genel olarak resim boyutlandırma web de çok kullanılan bir yapıdır. Mesela üye işlemlerinde profil resmi kaydedilirken, yüklenen resmin boyutunu ayarlamamız gerekir yoksa çok büyük resimler için sayfada çok fazla veri göndermek gerekecek, bu da sayfa yüklenme süresini uzatacaktır.
Şimdi genel olarak bir resim yükleme örneği yapalım. Bu örnekte yüklenecek resmi, resim boyutlarını, resmin kaydedileceği path ve ismi dışarıdan alıyoruz. Bunun için aşağıdaki formu tasarlayalım.
<table> <tr> <td colspan="2" style="width: 250px"> <input id="Resim_Gozat" runat="server" style="width: 219px; height: 23px;" type="file" /> td> tr> <tr> <td> <asp:Label ID="Label1" runat="server" Text="Yükseklik">asp:Label> td> <td> <asp:TextBox ID="YukseklikTxt" runat="server">asp:TextBox> td> tr> <tr> <td> <asp:Label ID="Label2" runat="server" Text="Genişlik">asp:Label> td> <td> <asp:TextBox ID="GenislikTxt" runat="server">asp:TextBox> td> tr> <tr> <td> <asp:Label ID="Label3" runat="server" Text="Resim Adı">asp:Label> td> <td> <asp:TextBox ID="ResimAdTxt" runat="server">asp:TextBox> td> tr> <tr> <td colspan="2"> <asp:Button ID="Yuklebtn" runat="server" Text="Yükle" OnClick="Yuklebtn_Click" /> td> tr> <tr> <td colspan="2"> <asp:Image ID="kucukResim" runat="server" /> td> tr> table> |
Yapımız aslında gayet basit. Göz at toolu ile seçilen resmi, istenen ebatlarda boyutlandırıp istenen klasöre kaydediyoruz. Bu işlemi yapmak için öncelikle seçilen resmi geçici olarak herhangi bir klasöre kaydediyoruz. Sonra Bitmap sınıfını kullanarak istediğimiz boyutta kaydediyoruz. En son olarak geçici resmimizi siliyoruz. İşlemler sırasında bize lazım olacak olan : System.Drawing.Imaging System.IO ve System.Drawing kütüphanelerini kodumuza eklemeyi unutmayalım.
Gerekli kodumuz:
// gerekli değerleri alalım int genislik = 300; int yukseklik = 400; string resimAdi = "yeniresim.jpg"; string resimyolu = Server.MapPath(""); try { genislik = Convert.ToInt32(GenislikTxt.Text); yukseklik = Convert.ToInt32(YukseklikTxt.Text); } catch (Exception) { }
if (ResimAdTxt.Text != "") { resimAdi = ResimAdTxt.Text + ".jpg"; } //resim boyutlandırma // önce file upload ile seçilen resmi geçici olarak kaydelim Resim_Gozat.PostedFile.SaveAs("\\" + Resim_Gozat.PostedFile.FileName); //yeni boyutlarda bir resim oluşturup kaydedelim using (Bitmap gercekresim = new Bitmap("\\" + Resim_Gozat.PostedFile.FileName)) { // boyutları belirleyelim Size newSize = new Size(yukseklik, genislik); Bitmap yeniResim = new Bitmap(gercekresim, newSize); // resmi istenen klasöre kaydedelim string path = resimyolu + "\\" + resimAdi; yeniResim.Save(path,ImageFormat.Jpeg); gercekresim.Dispose();
kucukResim.ImageUrl = resimAdi; } //geçici olarak kaydettiğimiz resmi silelim FileInfo fi = new FileInfo("\\" + Resim_Gozat.PostedFile.FileName); fi.Delete(); |