Sunteți pe pagina 1din 10

UNIVERSITATEA ȘTEFAN CEL MARE SUCEAVAFACULTATEA DE INGINERIE

ELECTRICĂ ȘI ȘTIINȚA CALCULATOARELOR

Image Editor
Documentatie proiect PNI

Sudent: Boicu Alexandru-Mihai


Grupa: 3132A

Profesor indrumator:
dr. ing. Sfichi Stefan
Cuprins
1.Introducere.............................................................................................................................................1
2.Despre proiect........................................................................................................................................1
3.Functionarea aplicatiei..........................................................................................................................1
4.Codul in C#.............................................................................................................................................6
5.Concluzie................................................................................................................................................10
6.Bibliografie.............................................................................................................................................10

1.Introducere
Am realizat o aplicatie simpla de editare imagine cu scopul de a deschide culorile
sau a le face mai accentuate .Aceasta aplicatie afost facuta in Visual Studio folosind ca
limbaj de programare c#.

2.Despre proiect
Ca modalitate de modificare a imaginilor am folosit doua functii prin care modific pixeli
acestora. In prima metoda lucrez pe imagine la nivel de bitemap folosind un control
matrix si in ceea de a doua functie modific matricial imaginea .
In acest proiect am facut schimbari de contrast pe imagini.

3.Functionarea aplicatiei
Aplicatia mea are o interfata simpla , ofera posibilitatea de a incarca o imagine in
doua exemplare pentru a se observa mai usor modificarile facute pe aceasta fata de
variant incarcata.Fig.1

1
Fig.1.

Pentru incarcarea , salvarea si resetarea imaginilor se folosesc butoanele din menubar


intrand in “File” si mai apoi apar restul butoanelor :”Open Image” , “Save Image” si
butonul de “Reload” , ca in Fig.2.

2
Fig.2.

In urmatorul buton din menu bar “Filtres” se deschide o lista de filter predefinite .Fig.3

3
Fig.3
Si pentru a creea propriile filter puteti folosi trackbarurilr de sub imaginile
incarcate pentru a da imaginilor diferite nuante de gri ,rosu ,verde si albastru .Fig.4

4
Fig.4

4.Codul in C#

---------------------------------Open image ----------------------


Image file;
Boolean opened = false;

void openImage()
{
DialogResult dr = openFileDialog1.ShowDialog();
if (dr == DialogResult.OK)
{
file = Image.FromFile(openFileDialog1.FileName);
pictureBox1.Image = file;
pictureBox2.Image = file;
opened = true;
}
}

5
--------------------------------Save Image----------------------------------------
void saveImage()
{
if (opened)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Images|*.png;*.bmp;*.jpg";
ImageFormat format = ImageFormat.Png;
if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
string ext = Path.GetExtension(sfd.FileName);
switch (ext)
{
case ".jpg":
format = ImageFormat.Jpeg;
break;
case ".bmp":
format = ImageFormat.Bmp;
break;

}
pictureBox1.Image.Save(sfd.FileName, format);
}
}
else
{
MessageBox.Show("No image loaded, first upload imade ");
}
}

--------------------------------------------------Reload----------------------------------------
void reload()
{
if (!opened)
{
MessageBox.Show("No image loaded, first upload imade ");
}
else
{
if (opened)
{
file = Image.FromFile(openFileDialog1.FileName);
pictureBox1.Image = file;
pictureBox2.Image = file;
opened = true;
}

}
}

6
------------------------------Control trackbar----------------------------------
void modificare()
{
float changered = trackBar1.Value * 0.1f;
float changegreen = trackBar2.Value * 0.1f;
float changeblue = trackBar3.Value * 0.1f;

if (!opened)
{
MessageBox.Show("No image loaded, first upload imade ");
}
else
{
Image img = pictureBox1.Image;
Bitmap bmpIverted = new Bitmap(img.Width, img.Height);
ImageAttributes ia = new ImageAttributes();
ColorMatrix cnPicture = new ColorMatrix(new float[][]
{
new float[]{ 1 + changered, 0,0,0,0},
new float[]{0, 1+ changegreen, 0,0,0},
new float[]{0, 0, 1+ changeblue, 0,0},
new float[]{0,0,0,1,0},
new float[]{0,0,0,0,1}
}
);
ia.SetColorMatrix(cnPicture);
Graphics g = Graphics.FromImage(bmpIverted);
g.DrawImage(img, new Rectangle(0, 0, img.Width, img.Height), 0, 0,
img.Width, img.Height, GraphicsUnit.Pixel, ia);
g.Dispose();
pictureBox1.Image = bmpIverted;

--------------------------------------------Filtre-------------------------------------------
Prima metoda de filtrare cu ajutorul unui control matricial (modificarea pixelilor unei
imagini)
void filtru2()
{
if (!opened)
{
MessageBox.Show("No image loaded, first upload imade ");
}
else
{
Image img = pictureBox1.Image;
Bitmap bmpIverted = new Bitmap(img.Width, img.Height);
ImageAttributes ia = new ImageAttributes();

7
ColorMatrix cnPicture = new ColorMatrix(new float[][]
{
new float[]{.393f,.349f+0.5f,.272f,0,0},
new float[]{.769f+0.3f,.686f,.534f,0,0},
new float[]{.189f,.168f,.131f+0.5f,0,0},
new float[]{0,0,0,1,0},
new float[]{0,0,0,0,1}
}
);
ia.SetColorMatrix(cnPicture);
Graphics g = Graphics.FromImage(bmpIverted);
g.DrawImage(img, new Rectangle(0, 0, img.Width, img.Height), 0, 0,
img.Width, img.Height, GraphicsUnit.Pixel, ia);
g.Dispose();
pictureBox1.Image = bmpIverted;

}
}

Acceasta bucata de cod am folosit-o pentru realizarea majoritati filtrelor


predefinite , schimband in mare parte doar valorile din variabil definite de ControlMatrix.

----------------------------------------Filtru------------------------------------------------------

Pentru o modificare mai precisa a imagini am folosit aceiasi medoda de la


“filtru2()” doar ca nu am mai folosit functiile predefinite din Visual Studio , am facut
sistemul matricial lund bit cu bit imaginea .
bool Gray(Bitmap b)
{
for(int i=0;i<b.Width;i++)
for(int j=0;j<b.Height;j++)
{
Color c1 = b.GetPixel(i, j);
int r1 = c1.R;
int g1 = c1.G;
int b1 = c1.B;
int gray = (byte)(.299 * r1 + .587 * g1 + .114 * b1);
r1 = gray;
g1 = gray;
b1 = gray;
b.SetPixel(i, j, Color.FromArgb(r1, g1, b1));

}
return true;
}

8
5.Concluzie
In aplicatia mea toate modificarile sunt facut pe contrastul imaginilor si am
constatat ca prin modificarea contrastului pot sa maresc claritatea .

6.Bibliografie
http://apollo.eed.usv.ro/~remus/arhive/PID/Lab2/Lab_PID_2.pdf

http://apollo.eed.usv.ro/~remus/arhive/PID/Curs3/Curs_3.pdf