Osman KURT

Kendime Not

ASP.Net'de Kaliteli Resim Küçültme ve Boyutlandırma, Ölçeklendirme

İ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ı

Sefer ALGAN ile 28 Saat OOP (Object Oriented Programming) Eğitimi

Sefer hocamla beraber 28 saat 4 haftalık OOP serüvenimiz bugün itibari ile son bulmuştur arkadaşlar. Kendisine verdiği değerli bilgiler için çok teşekkür ederim.

Kendisinin zaten Türkiye de C# denilince akla gelen ilk kişi olduğunu biliyorduk ama buna canlı bir şekilde tanık olmakta ayrı bir keyifdi doğrusu. Uzun zaman dır kendisini sosyal medyadan ve kitaplarından takip ediyordum bu sayede birebir tanışma fırsatını da yakalamış oldum. Çok keyifli ve şakacı bir insan olduğunu rahatlıkla söyleyebilirim.

Bu 4 hafta 28 saatlik serüven sonrasında geriye kalanlar ise Sefer hocam imzalı bir sertifika, hocamla birlikte çekindiğimiz resim ve belki de en önemlisi OOP ne demek onu öğrenmek.

*Sefer hocamın hoşuma giden sözlerinden belki de en önemlisini paylaşmak istiyorum, "Class yazmak demek OOP yapmak demek değildir." gerçekten de çok güzel bir söz sanırım bütün bu eğitimin amacını kısaca özetledi bu söz.

Tekrardan teşekkürler hocam teşekkürler firmam :D

 

Neden MVC?

Birçok yazılım geliştirici arkadaşımızın emin ki aklında olan ve hala cevap bulamadığı sorulardan biridir.

Neden MVC?

Arladaşlar aslın da bu soru o kadar da zor bir soru değil. Olayı basite indirgeyerek düşünmek gerekirse .Net insanlar üzerinde şöyle bir etki yaratıyor, (" sürükle bırak programcılığı! "). Aslında pek de haksız sayılmazlar. Çünkü o kadar çok kompanentler var ki piyasa da neredeyse size ihtiyaç bile kalmıyor. Ama bunların iyi olduğu kadar kötü olduğu taraflar da var.

Birincisi hız. Her ne kadar artık pc ler çok çok iyi donanımlı da olsa internet hızlarımız o kadar olmasa da fena sayılmazken ne olursa olsun kullanıcı hıza ihtiyaç duyacaktır. Bu da yazılımcının maharetine bakar tabi ki. Eğer siz proje boyunca hazır kompanentler kullanırsanız emin olun projenizin hızı ne sizi ne de bir başkasını tatmin edecektir.

İkinci si ise esneklik. Hazır gelen ve çerçevesi belli olan bir şey üzerin de ne kadar değişiklik yapabilirsiniz ki?

-Bence çok az.

İşte buna benzer sebeblerden ötürü MVC yazmak mantıklı. Çünkü en bastinden textbox ı bile kendimizin yazması gerkmekte. Repeater Datalist vb hiçbirşey yok.

Sonuç olarak Microsoft işi olması gerektiği gibi yapmaya karar verdi. Siz de işi olması gerektiği gibi yapın bence.

Görüşmek Üzere

Osman KURT

Yazılım Uzmanı