Reklamlar

c# Fotoğrafın Açılması

private void button1_Click(object sender, EventArgs e) //fotoğrafın açılması

{

OpenFileDialog op = new OpenFileDialog();

op.DefaultExt = “.jpg”;

op.Filter = “Image Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All files (*.*)|*.*”;

op.ShowDialog();

String ResminYolu = op.FileName;

pictureBox1.Image = Image.FromFile(ResminYolu);}

2-Görüntünün renkli, gri ve renk kanallarına ayrılmış histogramlarını ekranda gösteriniz.


a)2.pencerede açılan resim ve renk kanalları

private void button2_Click(object sender, EventArgs e)

{

Color OkunanRenk, DonusenRenk;

int R = 0, G = 0, B = 0;

Bitmap GirisResmi, CikisResmi;

GirisResmi = new Bitmap(pictureBox1.Image);

int ResimGenisligi = GirisResmi.Width; //GirisResmi global tanımlandı.

int ResimYuksekligi = GirisResmi.Height;

CikisResmi = new Bitmap(ResimGenisligi, ResimYuksekligi); //Cikis resmini oluşturuyor.

int i = 0, j = 0; //Çıkış resminin x ve y si olacak.

for (int x = 0; x < ResimGenisligi; x++)

{

for (int y = 0; y < ResimYuksekligi; y++)

{

OkunanRenk = GirisResmi.GetPixel(x, y); // renk kanalları

R = OkunanRenk.R;

G = OkunanRenk.G;

B = OkunanRenk.B;

DonusenRenk = Color.FromArgb(R, G, B);

CikisResmi.SetPixel(x, y, DonusenRenk);

}

}

pictureBox2.Image = CikisResmi;

}

b)2. Pencerede gri tonlamalı resmin açılması ve renklerin okunması

pictureBox1.Width = 200; pictureBox1.Height = 200;

pictureBox1.Location = new Point(1,1);

pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;

pictureBox2.Width = 200; pictureBox2.Height = 200;

pictureBox2.Location = new Point(200, 1);

pictureBox2.SizeMode = PictureBoxSizeMode.StretchImage;

this.Controls.Add(pictureBox1);

this.Controls.Add(pictureBox2);

Bitmap bitmap1 = new Bitmap(pictureBox1.Image);

int width1 = bitmap1.Width;

int height1 = bitmap1.Height;

Bitmap bitmap2 = new Bitmap(width1, height1);

for (int i = 0; i < width1; i++)

{

for (int j = 0; j < height1; j++)

{

Color color1 = bitmap1.GetPixel(i, j);

byte R = color1.R;

byte G = color1.G;

byte B = color1.B;

int common = (R + G + B) / 3;

color1 = Color.FromArgb(common, common, common);

bitmap2.SetPixel(i, j, color1);

}

}

pictureBox2.Image = bitmap2;

}

c)Histogram grafiği ve renk kodlarının elde edilmesi

private void button3_Click(object sender, EventArgs e)

{

ArrayList DiziPiksel = new ArrayList();

int OrtalamaRenk = 0;

Color OkunanRenk ;

int R = 0, G = 0, B = 0;

Bitmap GirisResmi; //Histogram için giriş resmi gri-ton olmalıdır.

GirisResmi = new Bitmap(pictureBox1.Image);

int ResimGenisligi = GirisResmi.Width; //GirisResmi global tanımlandı.

int ResimYuksekligi = GirisResmi.Height;

int i = 0; //piksel sayısı tutulacak.

for (int x = 0; x < GirisResmi.Width; x++)

{

for (int y = 0; y < GirisResmi.Height; y++)

{

OkunanRenk = GirisResmi.GetPixel(x, y);

OrtalamaRenk = (int)(OkunanRenk.R + OkunanRenk.G + OkunanRenk.B) / 3; //Griton resimde üç kanal

DiziPiksel.Add(OrtalamaRenk); //Resimdeki tüm noktaları diziye atıyor.

}

}

int [] DiziPikselSayilari = new int[256];

for (int r = 0; r < 255; r++) //256 tane renk tonu için dönecek.

{

int PikselSayisi=0;

for (int s = 0; s < DiziPiksel.Count ; s++) //resimdeki piksel sayısınca dönecek.

{

if (r == Convert.ToInt16(DiziPiksel[s]))

PikselSayisi++;

}

DiziPikselSayilari[r] = PikselSayisi;

}

//Değerleri listbox’a ekliyor.

int RenkMaksPikselSayisi = 0; //Grafikte y eksenini ölçeklerken kullanılacak.

for (int k = 0; k <= 255; k++)

{listBox1.Items.Add(“Renk:” + k + “=” + DiziPikselSayilari[k]);

if(DiziPikselSayilari[k]>RenkMaksPikselSayisi)

{

RenkMaksPikselSayisi=DiziPikselSayilari[k];

}

}

//Grafiği çiziyor.

Graphics CizimAlani;

Pen Kalem1 = new Pen(System.Drawing.Color.Yellow, 1);

Pen Kalem2 = new Pen(System.Drawing.Color.Red, 1);

CizimAlani = pictureBox2.CreateGraphics();

pictureBox2.Refresh();

int GrafikYuksekligi = 400;

double OlcekY = RenkMaksPikselSayisi / GrafikYuksekligi, OlcekX = 1.6;

for (int x = 0; x <= 255; x++)

{

CizimAlani.DrawLine(Kalem1, (int)(20 + x * OlcekX), GrafikYuksekligi, (int)(20 + x * OlcekX),

(GrafikYuksekligi – (int)(DiziPikselSayilari[x] / OlcekY)));

if(x%50==0)

CizimAlani.DrawLine(Kalem2, (int)(20 + x * OlcekX), GrafikYuksekligi, (int)(20 + x * OlcekX), 0);

}

textBox1.Text = “Maks.Piks=” + RenkMaksPikselSayisi.ToString();

}

3-Görüntüyü Ters Çeviren Kod

private void button4_Click(object sender, EventArgs e)

{

Image img = pictureBox1.Image;

img.RotateFlip(RotateFlipType.Rotate180FlipNone);

pictureBox2.Image = img;

}

private void button5_Click(object sender, EventArgs e)

{

Color OkunanRenk;

Bitmap GirisResmi, CikisResmi;

GirisResmi = new Bitmap(pictureBox1.Image);

int ResimGenisligi = GirisResmi.Width;

int ResimYuksekligi = GirisResmi.Height;

CikisResmi = new Bitmap(ResimGenisligi, ResimYuksekligi);

double Aci = 90

double RadyanAci = Aci * 2 * Math.PI / 360;

double x2 = 0, y2 = 0;

//Resim merkezini buluyor. Resim merkezi etrafında döndürecek.

int x0 = ResimGenisligi / 2;

int y0 = ResimYuksekligi / 2;

for (int x1 = 0; x1 < (ResimGenisligi); x1++)

{

for (int y1 = 0; y1 < (ResimYuksekligi); y1++)

{

OkunanRenk = GirisResmi.GetPixel(x1, y1);

//—-A-Orta dikey eksen etrafında aynalama —————-

//x2 = Convert.ToInt16(-x1 + 2 * x0);

//y2 = Convert.ToInt16(y1);

//—-B-Orta yatay eksen etrafında aynalama —————-

//x2 = Convert.ToInt16(x1);

//y2 = Convert.ToInt16(-y1 + 2 *y0);

//—-C-Ortadan geçen 45 açılı çizgi etrafında aynalama———-

double Delta = (x1 – x0) * Math.Sin(RadyanAci) – (y1 – y0) * Math.Cos(RadyanAci);

x2 = Convert.ToInt16(x1 + 2 * Delta * (-Math.Sin(RadyanAci)));

y2 = Convert.ToInt16(y1 + 2 * Delta * (Math.Cos(RadyanAci)));

if (x2 > 0 && x2 < ResimGenisligi && y2 > 0 && y2 < ResimYuksekligi)

CikisResmi.SetPixel((int)x2, (int)y2, OkunanRenk);

}

} pictureBox2.Image = CikisResmi;

}

Written by admin

Leave a Comment

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir