msHOWTO

C# resim işlemek etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
C# resim işlemek etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

12 Nisan 2012 Perşembe

C# Resmi Yeniden Boyutlandırma

Merhaba arkadaşlar. Bu makalemde sizlere bir resmi istediğimiz oranda nasıl büyültürüz nasıl küçültürüz nasıl genişletip nasıl daraltırız durumlarını anlatmaya çalışacağım.Mesela çok güncel bir örnek vermek gerekirse.Bir siteye resim yükleyeceksiniz.Fakat yükleyeceğiniz resmin boyutları çok büyük.Ne yapacaksınız ? Resmi yeniden boyutlandırıp kaydedip tekrar yüklemeye çalışcaksınız.Ne kadar uğraştırıcı bir iş değil mi ? Bir de yazılım dünyasından örnek vereyim arkadaşlar.Diyelim ki bir siteniz var .Ve kullanıcılarınız siteye resim yüklemesi yapacaklar.Düşünsenize kim nasıl resim atacak nerden bileceksiniz? Diyelim ki 100 kullanıcıdan her biri ortalama 3 mb lık bir resim yukleseler 300mb yapar.Sayının bu şekilde arttığını düşünün.Site bir süre sonra açılmaz :)

Peki kullanım amaçlarını anladıktan sonra hemen uygulamaya geçelim arkadaşlar ...

Formun tasarımı için bir tane picturebox,bir adet openfiledialog ve 2 adet button ekleyin.Butonların birinin text ine Gözat diğerine ise Yeniden Boyutlandır girin.Gelelim kodlama işlemine...

Aşağıdaki kütüphaneleri kod sayfanızın en üstüne yazın (kod sayfasına geçmenin bir diğer yolu de tasarım anında iken F7 tuşuna basmaktır.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;


Daha sonra aşağıdaki değişkenleri global olarak tanımlayın..


string dosyaYolu = string.Empty;
        Bitmap bmp = null;


Gözat butonuna aşağıdaki kodları yazın ...


if (openFileDialogDosyaAc.ShowDialog() == DialogResult.OK)
            {
                dosyaYolu = openFileDialogDosyaAc.FileName;

                //bir bitmap nesnesi oluşturulur ve seçilen resim bu nesneye yüklenir.  

                bmp = new Bitmap(dosyaYolu);

                pictureBox1.Image = bmp;
  
              //picturebox nesnesinin sizemode özelliği strech olarak ayarlanır.Bunun //sebebi ise seçilen resmin picturebox nesnesinde tam olarak gözükmesini sağlamaktır.

                pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
            }

Ve geldik en önemli kısma arkadaşlar ... Yeniden boyutlandır butonuna aşağıdaki kodları yazın ...


  Bitmap bmpKucuk = new Bitmap(pictureBox1.Image, 100, 50); // Yeniden boyutlandırmak için //Bitmap sınıfı kullanılır.Picturebox da yüklü olan resim 100 e 50 boyutunda yeniden //boyutlandırılıyor.
            pictureBox1.Image = bmpKucuk;
            pictureBox1.SizeMode = PictureBoxSizeMode.CenterImage;

C# GDI ile Resim İşleme

Merhaba arkadaşlar. Bu makalemde yapacağım örneği aslına bir çok kez görmüşsünüzdür. Mesela internette dolaşıyorsunuz.Ve süper bir resim gördünüz.O resmi indirmek istediniz.İndirdiniz açıyorsunuz veee bir bakıyorsunuz ki resmin bir yerinde reklam yazısı filan görüyorsunuz.Ne kadar sinir bozucu bir durum değil mi ? Bence de fakat işte şimdi tam bu işlemi yapan uygulama yapacağız. :) Biraz da biz başkalarını sinir edelim değil mi ? Daha iyimser bir örnek verecek olursak diyelim ki e-ticaret sitesi yaptınız ve sadece size ait ürünler var.Bu ürünleri koymak istiyorsunuz.Fakat çalınacak diye korkuyorsunuz.Kendi logonuzu yada web sitenizin adresini resme işlemek istiyorsunuz.Bir resim için kolay bir durum ama diyelim ki yüzlerce resminiz var.Eee her resim için aynı işlemleri mi yapacaksınız.Tabi ki hayır.Birlikte yapacağımız uygulama ile bu işlemi Gdi kullanarak tek bir tuşla halledeceksiniz. Gelelim uygulamayı yapmaya ...

Formun tasarımı için bir tane picturebox,bir adet openfiledialog ve 2 adet button ekleyin.Butonların birinin text ine Gözat diğerine ise İmzala girin.Gelelim kodlama işlemine...

Aşağıdaki kütüphaneleri kod sayfanızın en üstüne yazın (kod sayfasına geçmenin bir diğer yolu de tasarım anında iken F7 tuşuna basmaktır.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;


Daha sonra aşağıdaki değişkenleri global olarak tanımlayın..


string dosyaYolu = string.Empty;
        Bitmap bmp = null;


Gözat butonuna aşağıdaki kodları yazın ...


if (openFileDialogDosyaAc.ShowDialog() == DialogResult.OK)
            {
                dosyaYolu = openFileDialogDosyaAc.FileName;

                //bir bitmap nesnesi oluşturulur ve seçilen resim bu nesneye yüklenir.  

                bmp = new Bitmap(dosyaYolu);

                pictureBox1.Image = bmp;
  
              //picturebox nesnesinin sizemode özelliği strech olarak ayarlanır.Bunun //sebebi ise seçilen resmin picturebox nesnesinde tam olarak gözükmesini sağlamaktır.

                pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
            }

Ve geldik en önemli kısma ... İmzala buttonuna aşağıdaki kodları yazın ...


bmp = pictureBox1.Image.Clone() as Bitmap; // picturebox da hangi resim yukluyse onu clone lar.

            Graphics g = Graphics.FromImage(bmp);
            string imza = "Koray Düzgün";
            Font f = new Font("Arial", 40,FontStyle.Bold|FontStyle.Italic);// araya seperatör koyarak birden fazla style verebiliriz.
            int x = (pictureBox1.Width / 2) - (Convert.ToInt32(f.Size*imza.Length) /2);
            int y = (pictureBox1.Height / 2) - (f.Height / 2);
           
            g.DrawString(imza, f, Brushes.Gold, new Point(x, y));// bu kısımda imza string değeri resmin tam ortasına çizilir.x ve y noktalarının değerleri değiştirilerek istenilen noktaya işlemi yapabilirsiniz.
           
            pictureBox1.Image = bmp;
            pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
  


Bir sonraki makalemde görüşmek dileğiyle ...