Documente Academic
Documente Profesional
Documente Cultură
și
mini editor
Ananii Ioan-Daniel Galerie foto și mini editor
Cuprins
Introducere...........................................................................................................................................2
Interfață proiect....................................................................................................................................3
Funcționalitatea aplicației....................................................................................................................4
Coduri...................................................................................................................................................8
Bibliografie.........................................................................................................................................16
1
Introducere
În cadrul proiectului realizat la materia Prelucararea
Numerică a Imaginilor(PNI), proiect sub denumirea de
„Galerie foto și mini editor”, am realizat un proiect care prin
denumire se observa ce rol are, și anume acela de a încărca
imagini dintr-un folder din PC și de a edita imaginile
respective. Prin încărcare de imagini mă refer că utilizatorul
poate prelua un întreg folder cu imagini sau poate prelua o
imagine dintr-un anumit folder sau o selecție de imagini. Iar
prin editare mă refer prin editarea contrastului imaginii
selectate, prin anumite filtre prestabilite sau prin schimbarea
celor 3 culori primare(RGB) sau prin decuparea unei anumite
portiuni din imagine. De asemenea utilizatorul poate salva
imaginea respectiva fără modificări sau cu modificări, depinde
de alegerea sa, astfel utilizatorul poate să-și creeze propria
galerie foto.
2
Interfață proiect
Interfața grafică precum și întregul proiect a fost realizat
în Visual Studio 2017. În momentul în care utilizatorul
deschide aplicația i se va afișa interfața care este reprezentată
în imaginea următoare.
3
Funcționalitatea aplicației
În primul rând ca utilizatorul să poate interacționa cu
aplicaștia acesta trebuie să se folosească de bara de meniu.
Prin intermediul acesteia el poate adăuga un folder cu imagini
sau o imaginie sau mulțime de imagini.
4
Figură 3 Buton info1
5
Figură 5 Imagine selectată
6
Figură 7 Utilizare trackbar-uri
7
Iar dacă în cazul în care utilizatorul dorește să editeze sau
sa folosească butoanele fără să fi selectat imaginea acestuia îi
va apărea un mesaj de eroare.
8
Coduri
Codul reprezentativ pentru introducerea imaginilor in list
view file:
private void addImageToolStripMenuItem_Click(object sender, EventArgs e)
{
using (OpenFileDialog ofd = new OpenFileDialog() { Multiselect = true,
ValidateNames = true, Filter = "|*.BMP;*.JPG;*.GIF;*.PNG;*.TIFF;JPEG|*.jpg|" })
{
if (ofd.ShowDialog() == DialogResult.OK)
{
foreach (string fileName in ofd.FileNames)
{
fi = new FileInfo(fileName);
fileNames.Add(fi.FullName);
listViewFile.Items.Add(fi.Name, 0);
}
}
}
}
if (folder.ShowDialog() == DialogResult.OK)
{
LocImg = Directory.GetFiles(folder.SelectedPath, "*jpg",
SearchOption.TopDirectoryOnly);
LocImg1 = Directory.GetFiles(folder.SelectedPath, "*.bmp",
SearchOption.TopDirectoryOnly);
LocImg2 = Directory.GetFiles(folder.SelectedPath, "*.gif",
SearchOption.TopDirectoryOnly);
LocImg3 = Directory.GetFiles(folder.SelectedPath, "*.png",
SearchOption.TopDirectoryOnly);
LocImg4 = Directory.GetFiles(folder.SelectedPath, "*.tiff",
SearchOption.TopDirectoryOnly);
LenLocal = folder.SelectedPath.Length;
9
for (int count = 0; count < LocImg.Length; count++)
{
PictureBox pcb = new PictureBox();
pcb.SizeMode = PictureBoxSizeMode.StretchImage;
pcb.ImageLocation = LocImg[count];
pcb.Width = 50;
pcb.Height = 50;
flowLayoutPanel1.Controls.Add(pcb);
}
for (int count = 0; count < LocImg1.Length; count++)
{
PictureBox pcb = new PictureBox();
pcb.SizeMode = PictureBoxSizeMode.StretchImage;
pcb.ImageLocation = LocImg1[count];
pcb.Width = 50;
pcb.Height = 50;
flowLayoutPanel1.Controls.Add(pcb);
}
for (int count = 0; count < LocImg2.Length; count++)
{
PictureBox pcb = new PictureBox();
pcb.SizeMode = PictureBoxSizeMode.StretchImage;
pcb.ImageLocation = LocImg2[count];
pcb.Width = 50;
pcb.Height = 50;
flowLayoutPanel1.Controls.Add(pcb);
}
for (int count = 0; count < LocImg3.Length; count++)
{
PictureBox pcb = new PictureBox();
pcb.SizeMode = PictureBoxSizeMode.StretchImage;
pcb.ImageLocation = LocImg3[count];
pcb.Width = 50;
pcb.Height = 50;
flowLayoutPanel1.Controls.Add(pcb);
}
for (int count = 0; count < LocImg4.Length; count++)
10
{
PictureBox pcb = new PictureBox();
pcb.SizeMode = PictureBoxSizeMode.StretchImage;
pcb.ImageLocation = LocImg4[count];
pcb.Width = 50;
pcb.Height = 50;
flowLayoutPanel1.Controls.Add(pcb);
}
}
}
pcb.Width = 75;
pcb.Height = 75;
11
{
PictureBox pcb = (PictureBox)sender;
pcb.Width = 50;
pcb.Height = 50;
pcb.Refresh();
}
frm.Text = name;
frm.ShowDialog();
}
}
}
void selectImg()
{
if (listViewFile.SelectedItems.Count > 0)
{
foreach (ListViewItem itm in listViewFile.SelectedItems)
{
12
int imgIndex = itm.ImageIndex;
if (imgIndex >= 0 && imgIndex < this.imageList1.Images.Count)
{
pictureBox1.Image = this.imageList1.Images[imgIndex];
Image img =
Image.FromFile(fileNames[listViewFile.FocusedItem.Index]);
pictureBox1.Image = img;
if (img.Width < pictureBox1.Width)
pictureBox1.Width = img.Width;
else
pictureBox1.Width = 841;
if (img.Height < pictureBox1.Height)
pictureBox1.Height = img.Height;
else
pictureBox1.Height = 561;
}
}
}
}
s.InitialDirectory =
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
s.RestoreDirectory = true;
try
{
if (s.ShowDialog() == DialogResult.OK)
{
string filename = s.FileName;
13
}
}
}
catch
{
MessageBox.Show("Error: Didn't selected a image!");
}
}
g.Dispose();
pictureBox1.Image = bmpInverted;
}
catch
{
MessageBox.Show("Error: Didn't selected a image!");
}
14
Codurile reprezentative pentru filtre:
void Winter()
{
try
{
Image img = pictureBox1.Image;
Bitmap bmpInverted = new Bitmap(img.Width, img.Height);
selectImg();
ImageAttributes ia = new ImageAttributes();
ColorMatrix cmPicture = new ColorMatrix(new float[][]
{
new float[]{1,0,0,0,0},
new float[]{0,1,0,0,0},
new float[]{0,0,1,0,0},
new float[]{0, 0, 0, 1, 0},
new float[]{0, 0, 1, 0, 1}
});
ia.SetColorMatrix(cmPicture);
Graphics g = Graphics.FromImage(bmpInverted);
g.Dispose();
pictureBox1.Image = bmpInverted;
}
catch
{
MessageBox.Show("Error: Didn't selected a image!");
}
}
15
Codurile reprezentative pentru decuparea imaginii:
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
Cursor = Cursors.Cross;
cropX = e.X;
cropY = e.Y;
cropPen = new Pen(Color.Black, 1);
cropPen.DashStyle = DashStyle.DashDotDot;
}
pictureBox1.Refresh();
}
16
Bibliografie
https://stackoverflow.com/questions/
https://www.youtube.com/watch?v=xsOJjnyw2e4
https://www.youtube.com/watch?v=d0AHKq7lDF4
https://www.daniweb.com/programming/software-
development/threads/228060/how-to-select-particular-control-
from-flowlayout-panel
https://github.com/oozcitak/imagelistview/wiki/ImageListVie
wRenderer
https://www.codeproject.com/Articles/43265/ImageListView
17