İnternet dünyasının hızlı şekilde büyümesi ve günlük hayatımızın vazgeçilmez öğesi olması ile birlikte hayatımızın bütün media datalarını internet ağı üzerinde bulundurur olduk. Firmalar da kendi sayfalarında yada ürünlerini pazarladıkları e-ticaret sayfalarında oldukça sık şekilde media dosyaları paylaşmakta. Doğru olanı da budur zaten ama doğruyu biz yazılımcıların yapması gerekmekte. Mesela 100 ürün resminin olduğu bir sayfayı düşünelim tanesi 1 MB olan 100 adet resim dosyası ve orjinal boyutlarda koyulmuş düşünsenize sadece ürün listelemek için 100 MB :D kotamızın 4 GB olduğunu düşünürsen 40 kere aynı siteye girmek yeter :D Şimdi yazılımcı olarak alacağımız önlemlerin başında resim ölçeklendirme gelir. Nasıl mı? İşte alt kısımda ki kodla yapıyoruz. Önce class dosyamız var onu bir oluşturalım isterseniz.
public class fotograf
{
public static void yukle(FileUpload fu, int Ksize)
{
System.Drawing.Image orjinalFoto = null;
HttpPostedFile jpeg_image_upload = fu.PostedFile;
orjinalFoto = System.Drawing.Image.FromStream(jpeg_image_upload.InputStream);
KucukBoyut(orjinalFoto, Ksize, fu.FileName);
}
protected static void KucukBoyut(System.Drawing.Image orjinalFoto, int boyut, string dosyaAdi)
{
System.Drawing.Bitmap islenmisFotograf = null;
System.Drawing.Graphics grafik = null;
int hedefGenislik = boyut;
int hedefYukseklik = boyut;
int new_width, new_height;
new_height = (int)Math.Round(((float)orjinalFoto.Height * (float)boyut) / (float)orjinalFoto.Width);
new_width = hedefGenislik;
hedefYukseklik = new_height;
new_width = new_width > hedefGenislik ? hedefGenislik : new_width;
new_height = new_height > hedefYukseklik ? hedefYukseklik : new_height;
islenmisFotograf = new System.Drawing.Bitmap(hedefGenislik, hedefYukseklik);
grafik = System.Drawing.Graphics.FromImage(islenmisFotograf);
grafik.FillRectangle(new System.Drawing.SolidBrush(System.Drawing.Color.White), new System.Drawing.Rectangle(0, 0, hedefGenislik, hedefYukseklik));
int paste_x = (hedefGenislik - new_width) / 2;
int paste_y = (hedefYukseklik - new_height) / 2;
grafik.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
grafik.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
grafik.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Default;
System.Drawing.Imaging.ImageCodecInfo codec = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()[1];
System.Drawing.Imaging.EncoderParameters eParams = new System.Drawing.Imaging.EncoderParameters(1);
eParams.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 95L);
grafik.DrawImage(orjinalFoto, paste_x, paste_y, new_width, new_height);
islenmisFotograf.Save(HttpContext.Current.Server.MapPath("/klasor/" + dosyaAdi), codec, eParams);
}
}
Şimdi ise Default.aspx sayfamıza 1 adet fileupload ve 1 adet buton koyalım daha sonra da butonumuza çift tıklayalım. Gelen click event'mize alt kısımda ki kodumuzu yazalım ve işlemimizi tamamlayalım.
protected void Button1_Click(object sender, EventArgs e)
{
fotograf.yukle(FileUpload1, 150);
}
İşlemimiz bu kadar arkadaşlar. Artık kaliteli bir şekilde resimlerimizi boyutlandırabiliriz.
Görüşmek üzere,
Osman KURT
Yazılım Uzmanı