Sunteți pe pagina 1din 13

Ministerul Educaiei al Republicii Moldova

Universitatea Tehnic a Moldovei


Facultatea Calculatoare, Informatic i Microelectronic
Catedra Automatica i Tehnologii Informaionale

Raport
Disciplina: Sisteme Multimedia
Lucrarea de laboratorul Nr. 1
Tema: Manipularea imaginilor

A efectuat st. gr. TI-131:

Lozovan Nicolae

A verificat lec. Sup:

Sava Nina

Chiinu 2016
Scopul lucrarii:

Familiarizarea cu produsul Director, studierea principalelor componente necesare dezvoltrii unei


aplicaii multimedia.
Sarcina lucrarii:
Dezvolt o aplicaie Desktop care ncarc una sau mai multe imagini dintr-un fiier i le vizualizeaz
ntr-o fereastr. Asupra acestor imagini pot fi executate careva aciuni, utiliznd controale UI (butoane,
cmpuri de introducere a textului, etc.)
Efectuarea lucrarii:

Fig.1-Fereastra de baza a aplicatiei noastre


In Fig.1 avem fereastra de baza cu toate sarcinile necesare (Open, Save, Ton gri, Oglindire,
Stop,Slideshow,Intoarcerea imaginii pe verticala si 90 grade,Contrast,Luminozitate) pentru
efectuarea lucrarii de laborator Nr 1

Fig.2-Butonul Open
In Fig.2 avem fereastra care se deschide cu ajutorul butonului Open,in aceasta fereastra
putem alege fisierele care dorim sa fie deschise in aplicatia noastra.

Fig.3-Butonul Save
In Fig.3 avem fereastra care deschide locatia unde dorim sa fie salvate imaginile noastre,si
putem alege si in ce format sa fie imaginile

Fig.4-Butonul Ton gri


In Fig.4 avem butonul ton gri care ne permite sa schimbam tonul imaginii intr-un ton de
culoare gri.

Fig.5-Butonul Oglinda
In Fig.5 avem butonul oglinda care ne permite sa aplic efectul de oglind asupra imaginii de-a
lungul unei linii specificabile de utilizator.

Fig.6-Butonul Slideshow
In Fig.6 avem butonul Slideshow care ne permite sa modificm imaginea surs (iteram prin mai
multe imagini) prin date introduse de utilizator; schimbm ntr-un mod "slide show" (pe un interval
de timp).

Fig.7-Butonul 90 grade
In Fig.7 avem butonul 90 grade care ne permite sa modificm imaginea surs prin rotirea imaginii la
un unghi divizibil cu 90 ;

Fig.8-Butonul verticala
In Fig.8 avem verticala care ne permite sa modificm imaginea surs prin rotirea imaginii pe
verticala

Fig.9-Contrast
In Fig.9 avem contrastul care ne permite sa avem diferena dintre nnegrirea maxim i cea minim care se
pot vedea ntr-o imagine fotografic. Am reglat contrastul de la 0-100%.

Fig.10-Luminozitate
In Fig.10 avem luminozitate care ne permite sa avem diferena de stralucire ntr-o imagine
fotografic. Am reglat luminozitatea de la 0-100%.
ntrebri de control:
1. Ce reprezint componenta Stage?
Componenta Stage definete fereastra (zona client) n care se deruleaz prezentarea multimedia
2. Pentru ce este utilizat componenta Cast?
Componenta Cast este utilizat pentru a stoca actorii unei aplicaii. Ea se poate configura
(View/Cast/Thumbnail) astfel nct s prezinte actorii sub forma unor mici ferestre de vizualizare.
Actorii se pot aduga n componenta Cast prin selecia urmtorului membru cast neocupat apoi Click
Dreapta/Import dac ei provin din afara mediului de programare sau se pot genera de ctre alte
componente ale produsului software.
3. Ce elemente conine componenta Tools?
Componenta Tools conine instrumente utile n dezvoltarea de aplicaii Director cum ar fi: butoane
de diferite tipuri, containere de texte, obiecte grafice

4. Ce definete componenta Score, ce reprezint liniile i coloanele?


7

Componenta Score definete n Director axa timpului. Ea se utilizeaz pentru a secvenializa de-a
lungul axei timpului actorii n funcie de scenariul aplicaiei. Aceast component este organizat ca
o matrice:
- liniile reprezint canale (sprite) i folosesc pentru a instania actorii din componenta cast;
- coloanele reprezint cadrele (frame) i folosesc pentru a marca durata de vizibilitate a unui actor n
raport cu ntregul film.
5. Care este destinaia componentei Control Panel?
Componenta Control Panel este specializat pentru controlul derulrii prezentrii multimedia n
Director. Ea permite trecerea aplicaie din modul construcie n modul execuie.
6. Cum pot fi scrise scripturile n Director?
Scripturile n Director se pot scrie fie n limbajul de tip script Lingo, propriu produsului software, fie
n Java Script. Prin intermediul scripturilor se definete interaciunea dintre utilizator i aplicaie i
se implementeaz funcionalitatea acesteia.
7. Care sunt etapele de dezvoltare ale unei aplicaii mutimedia?
A. Identificarea actorilor ce se vor utiliza n aplicaia respectiv. Aceast etap implic utilizarea
componentei Cast n sensul c ea va fi populat cu elemente. Actorii pot s provin din exteriorul
mediului de dezvoltare (Director), cum ar fi imagini, secvene de sunet sau secvene video
achiziionate independent i existente n formate acceptate n Director sau pot fi create utiliznd
componentele produsului software.
B. Secvenializarea actorilor presupune utilizarea componentei Score (axa timpului). Actorii
existeni n Cast, conform unui scenariu sunt instaniai n Score, li se fixeaz durata de timp n
care ei sunt vizibili i momentul ntrrii lor n scen. In cazul exemplului prezentat, trasarea
butonului pe scen determin includerea lui ca membru n Cast ct i secvenializarea lui n
Score.
C. Definirea interfeei cu utilizatorul este etapa n care se utilizeaz componenta Script pentru a
scrie secvene de cod ca rspuns la evenimentele ce se intercepteaz pe perioada execuiei
aplicaiei. Prin aceast etap dezvoltatorul permite utilizatorului s aleag scenariul de derulare a
aplicaiei multimedia.
8. Ce reprezint un script?
Prin script se nelege o secven de cod realizat pentru a rspunde la mesajele interceptate de obiecte ca
urmare a declanrii unor evenimente, pentru a defini clase sau funcii de utilizator.
9. Ce tipuri de evenimente sunt interceptate pe parcursul derulrii unei aplicaii?
Evenimentele care sunt interceptate pe parcursul derulrii unei aplicaii se pot mpri n dou
categorii:
- evenimente de sistem care sunt predefinite i denumite in Director (de exemplu: ExitFrame,
MouseUp etc);
- evenimente de utilizator definite i gestionate de dezvoltatorul aplicaiei.
10. Care este ordinea de interceptare a evenimentelor de sistem de ctre o aplicaie?
A. la startarea aplicaiei:
o prepareMovie;
8

o prepareFrame;
o beginSprite;
o startMovie.
B. la accesarea unui frame:
o beginSprite;
o stepFrame;
o prepareFrame;
o enterFrame / exitFrame;
o endSprite.
C. la oprirea aplicaiei:
o endSprite;
o stopMovie.

Concluzie.
In urma efectuarii lucrarii de laborator ,am realizat o aplicatie Desktop care ncarc una sau mai
multe imagini dintr-un fiier i le vizualizeaz ntr-o fereastr. Asupra acestor imagini pot fi executate careva
aciuni, utiliznd controale UI (butoane, cmpuri de introducere a textului, etc.).Pentru a putea fi deschisa
imaginea trebuie sa fie compatibila cu formatul imaginii.

Anexa 1
using
using
using
using
using

System;
System.Drawing;
System.Drawing.Imaging;
System.IO;
System.Windows.Forms;

namespace lab1._1
{
public partial class Form1 : Form
{
Bitmap newBitmap;
Image file;
Boolean opened = false;
float contrast = 0;
float gamma = 0;
int filemax = 0;
int filecount = 0;

public Form1()
{
InitializeComponent();
}
Graphics g;
Pen p = new Pen(Color.Black,8);
Point start = new Point(0, 0);
Point end = new Point(0, 0);
bool drawing = false;
private void button1_Click(object sender, EventArgs e)
{
DialogResult dr = openFileDialog1.ShowDialog();
if (dr == DialogResult.OK)
{
file = System.Drawing.Image.FromFile(openFileDialog1.FileName);
newBitmap = new Bitmap(openFileDialog1.FileName);
pictureBox1.Image = file;
opened = true;
}
}
private void button2_Click(object sender, EventArgs e)
{
DialogResult dr = saveFileDialog1.ShowDialog();
if (dr == DialogResult.OK)
{
if (opened)
{
"bmp")

if (saveFileDialog1.FileName.Substring(saveFileDialog1.FileName.Length - 3).ToLower() ==
{

file.Save(saveFileDialog1.FileName, ImageFormat.Bmp);
}
if (saveFileDialog1.FileName.Substring(saveFileDialog1.FileName.Length - 3).ToLower() == "jpg")
{
file.Save(saveFileDialog1.FileName, ImageFormat.Jpeg);
}
if (saveFileDialog1.FileName.Substring(saveFileDialog1.FileName.Length - 3).ToLower() ==
"png")

10

file.Save(saveFileDialog1.FileName, ImageFormat.Png);
}
if (saveFileDialog1.FileName.Substring(saveFileDialog1.FileName.Length - 3).ToLower() == "gif")
{
file.Save(saveFileDialog1.FileName, ImageFormat.Gif);
}
}
else
{
MessageBox.Show("Trebuie de deschis urmatoarea imagine!");
}
}

private void button3_Click(object sender, EventArgs e)


{
for (int x = 0; x < newBitmap.Width; x++)
{
for (int y = 0; y < newBitmap.Height; y++)
{
Color originalColor = newBitmap.GetPixel(x, y);
int grayScale = (int)((originalColor.R * .3) + (originalColor.G * .59) + (originalColor.B * .11));
Color newColor = Color.FromArgb(grayScale, grayScale, grayScale);
newBitmap.SetPixel(x, y, newColor);
}
}
pictureBox1.Image = newBitmap;

//save (write) mirror image


newBitmap.Save("E:\\UTM\\TON GRI.png");

private void trackBar2_Scroll(object sender, EventArgs e)


{
label4.Text = trackBar2.Value.ToString();
contrast = 0.04f * trackBar2.Value;
Bitmap bm = new Bitmap(newBitmap.Width, newBitmap.Height);
Graphics g = Graphics.FromImage(bm);
ImageAttributes ia = new ImageAttributes();
ColorMatrix cm = new ColorMatrix(new float[][] {
new float[] {contrast,0f,0f,0f,0f},
new float[] { 0f, contrast, 0f, 0f, 0f },
new float[] { 0f, 0f,contrast, 0f, 0f },
new float[] { 0f,0f, 0f, 1f, 0f },
new float[] { 0.001f,0.001f, 0.001f, 0f, 1f }});
ia.SetColorMatrix(cm);
g.DrawImage(newBitmap, new Rectangle(0, 0, newBitmap.Width, newBitmap.Height), 0, 0,
newBitmap.Width, newBitmap.Height, GraphicsUnit.Pixel, ia);
g.Dispose();
ia.Dispose();
pictureBox1.Image = bm;
//save (write) mirror image
bm.Save("E:\\UTM\\Luminozitate.png");
}
private void trackBar1_Scroll_1(object sender, EventArgs e)
{
label1.Text = trackBar1.Value.ToString();
gamma = 0.04f * trackBar1.Value;
Bitmap bm = new Bitmap(newBitmap.Width, newBitmap.Height);
Graphics g = Graphics.FromImage(bm);
ImageAttributes ia = new ImageAttributes();
ia.SetGamma(gamma);

11

g.DrawImage(newBitmap, new Rectangle(0, 0, newBitmap.Width, newBitmap.Height), 0, 0,


newBitmap.Width, newBitmap.Height, GraphicsUnit.Pixel, ia);
g.Dispose();
ia.Dispose();
pictureBox1.Image = bm;
//save (write) mirror image
bm.Save("E:\\UTM\\Contrast.png");
}
private void button4_Click(object sender, EventArgs e)
{
//read source image
Bitmap simg = new Bitmap("E:\\8.jpg");
//get source image dimension
int width = simg.Width;
int height = simg.Height;
//load source image in picturebox1
pictureBox1.Image = System.Drawing.Image.FromFile("E:\\8.jpg");
//mirror image
Bitmap mimg = new Bitmap(width * 2, height);
for (int y = 0; y < height; y++)
{
for (int lx = 0, rx = width * 2 - 1; lx < width; lx++, rx--)
{
//get source pixel value
Color p = simg.GetPixel(lx, y);

//set mirror pixel value


mimg.SetPixel(lx, y, p);
mimg.SetPixel(rx, y, p);

}
//load mirror image in picturebox2
pictureBox1.Image = mimg;

//save (write) mirror image


mimg.Save("E:\\UTM\\oglindire.png");

private void button5_Click(object sender, EventArgs e)


{
FolderBrowserDialog dlg = new FolderBrowserDialog();
if (dlg.ShowDialog() == DialogResult.OK)
{
filemax = 0;
panel1.Controls.Clear();
foreach(string a in Directory.GetFiles(dlg.SelectedPath))
{
if((a.EndsWith(".jpg"))||(a.EndsWith(".png")) || (a.EndsWith(".gif") || (a.EndsWith(".jpg"))))
{
PictureBox pb = new PictureBox();
Image im = Image.FromFile(a);
pb.Image = im;
panel1.Controls.Add(pb);
filemax++;
}
}
timer1.Enabled = true;

12

private void timer1_Tick(object sender, EventArgs e)


{
if(filecount == filemax) { filecount = 0; }
PictureBox p = (PictureBox)panel1.Controls[filecount];
pictureBox1.Image = p.Image;
filecount++;
}
private void button6_Click(object sender, EventArgs e)
{
timer1.Stop();
}
private void button7_Click(object sender, EventArgs e)
{
pictureBox1.Image.RotateFlip(RotateFlipType.Rotate90FlipNone);
pictureBox1.Refresh();
pictureBox1.Image = newBitmap;

//save (write) mirror image


newBitmap.Save("E:\\UTM\\90 grade.png");

private void button8_Click(object sender, EventArgs e)


{
pictureBox1.Image.RotateFlip(RotateFlipType.Rotate180FlipNone);
pictureBox1.Refresh();
pictureBox1.Image = newBitmap;

//save (write) mirror image


newBitmap.Save("E:\\UTM\\verticala.png");

}
}

13

S-ar putea să vă placă și

  • Lab 4
    Lab 4
    Document4 pagini
    Lab 4
    Viktor Dobrovolschi
    Încă nu există evaluări
  • Victor Practica
    Victor Practica
    Document29 pagini
    Victor Practica
    Viktor Dobrovolschi
    Încă nu există evaluări
  • Lab1 CO
    Lab1 CO
    Document5 pagini
    Lab1 CO
    Viktor Dobrovolschi
    Încă nu există evaluări
  • ASDN2
    ASDN2
    Document6 pagini
    ASDN2
    Viktor Dobrovolschi
    Încă nu există evaluări
  • PW Cap.1
    PW Cap.1
    Document62 pagini
    PW Cap.1
    Viktor Dobrovolschi
    Încă nu există evaluări
  • CURS9
    CURS9
    Document8 pagini
    CURS9
    Viktor Dobrovolschi
    Încă nu există evaluări
  • LFPC Teze de Curs Ti 131
    LFPC Teze de Curs Ti 131
    Document4 pagini
    LFPC Teze de Curs Ti 131
    Viktor Dobrovolschi
    Încă nu există evaluări
  • Examen Desen Tehnic
    Examen Desen Tehnic
    Document2 pagini
    Examen Desen Tehnic
    Dima Tighineanu
    Încă nu există evaluări
  • Lab MN 2
    Lab MN 2
    Document12 pagini
    Lab MN 2
    Viktor Dobrovolschi
    Încă nu există evaluări