Multimedia in Java - AudioClip-uri in Java, Applet-uri Java continand imagini



Multimedia in Java - AudioClip-uri in Java, Applet-uri Java continand imagini



AudioClip-uri in Java


Sunetele sunt preluate si prelucrate in limbajul Java sub forma de obiecte AudioClip, adica obiecte ale claselor ce implementeaza interfata AudioClip. Metodele destinate manipularii fisierelor sonore sunt componente ale clasei Applet sau ale interfetei AudioClip.



Pentru a incarca un fisier audio “.au” se utilizeaza metoda componenta a clasei Applet:

public AudioClip getAudioClip(URL a, String nume_sunet);

unde “a” este un obiect al clasei URL adresa in retea cuprinzand inclusiv relatii despre protocolul de comunicatii utilizat si despre calculatorul gazda.

Aceasta adresa poate fi obtinuta cu functia

public URL getDocumentBase()

De exemplu:

audio=getAudioClip(getDocumentBase(),'sunet.au');

T.14.1.1. Scrieti o linie de program care sa preia in obiectul “sunet” de tip AudioClip un fisier “C:MuzicaAUsunet.au”

Ascultarea sunetului cuprins in pagina web se comanda cu metoda:

public void play (URL url, String nume_sunet)

a clasei Applet. Adica pentru fisierul sonor din exemplul anterior comanda de pornire este:

play(getDocumentBase(),'sunet.au');

T.14.1.2. Scrieti o linie de program care sa permita audierea fisierului sonor din T.14.1.1.

Alta varianta de manipulare a sunetelor este utilizarea metodelor interfetei AudioClip:

public abstract void loop():clipul este ascultat in bucla;

public abstract void play(): clipul este ascultat o singura data;

public abstract void stop():clipul este oprit;

Un exemplu de program care “canta” clipul audio “celine.au” plasata in acelasi director cu fisierul sursa este prezentat in Figura 14.1.

In practica paginile web ce contin sunete cuprind pe langa elemente de dialog si comanda (interfata de utilizator), imagini ce ilustreaza grafic sunetele din fisierele “.au” prezentate.

T.14.1.4. Raspundeti la urmatoarele intrebari

1. Obiectele AudioClip sunt:

Instante ale clasei AudioClip;

Instante ale clasei Applet;

Instante ale clasei ce implementeaza AudioClip.

2. Incarcarea unui fisier sonor se face cu sintaxa:

audio.getAudioClip(String fisier_sunet);

audio = new getAudioClip(String fisier_sunet);

audio = getAudioClip(URL a, String fisier_sunet);

3. Un obiect AudioClip se poate asculta cu metoda:

play();

loop();

start().

4. Metoda stop() este utilizata pentru:

Oprirea unui obiect sonor;

Oprirea applet-ului ce contine obiectul sonor;

Oprirea browser-ului.

5. Manipularea obiectelor sonore se face in:

Aplicatii de sine statatoare;

Applet-uri;

Ambele.


Applet-uri Java continand imagini


In Java imaginile sunt obiecte ale clasei Image. Prin urmare, toate procedurile de manipulare ale imaginilor, pornind de la achizitie si incheind cu afisarea si prelucrarea, se desfasoara conform tipologiei generale de lucru cu obiectele. Pentru toate aceste operatii, in clasele Applet si Graphics s-au definit metode, care permit executarea lor in cadrul applet-urilor.

Preluarea unei imagini de la o adresa oarecare intr-un obiect Image se face cu metoda componenta a clasei Applet:

public Image getImage(URL a,String nume_imagine)

similar cu cazul sunetelor prezentat in paragraful anterior adresa URL se obtine cu metoda:

public URL getDocumentBase()

Prin urmare instantierea unui obiect imagine se face cu o linie de cod de forma

Image o_imagine=getImage(getDocumentBase(),'imag.gif');

T.14.2.1. Scrieti o linie de program care sa defineasca obiectul Image “i” care sa contina o imagine “C:WINDOWSrivets.bmp”

Afisarea unei imagini intr-un applet se face cu metoda componenta a clasei Graphics:

public void drawImage(Image im,int x,int y,ImageObserver obs)

in care “im” este obiectul imagine, (x,y) coordonatele coltului stanga sus, iar “obs” este componenta a interfetei ImageObserver implementata de clasa Component. De obicei acest parametru este inlocuit cu “this”.

Afisarea imaginii transferata in exemplul anterior la coordonatele (10,10) se face deci cu liniile de program prezentate in continuare:

Graphics g;

g.drawImage(o_imagine,10,10,this);

T.14.2.2. Scrieti o secventa de program care, in mod similar cu exemplul de mai sus, sa afiseze imaginea preluata la T.14.2.1.

Applet-ul de mai sus ruleaza intr-o pagina web similara ca forma cu cele prezentate in lectiile anterioare. Pentru buna functionare este necesar ca dimensiunile “width” si “hight” declarate in fisierul HTML sa fie alese suficient de mari, incat imaginea si celelalte elemente sa incapa in spatiul rezultat.

T.14.2.4. Raspundeti la urmatoarele intrebari

1. Imaginile in java sunt obiecte:

Im;

MediaTracker;

VideoClip.

2. Metodele din clasele predefinite in Java permit:

Incarcarea imaginilor;

Afisarea imaginilor;

Transformarea unei imagini statice intr-o secventa.

3. Incarcarea unei imagini se face cu sintaxa:

o_imagine.getImage(String nume_imag);

o_imagine = new getImage(String nume_imag);

o_imagine = getImage(URL a,String nume_imag);

4. Afisarea unei imagini se face cu metoda:

putImage();

drawImage();

paintimage().

5. O imagine este afisata intr-un applet daca:

A fost preluata corect;

Coordonatele ei sunt in interiorul applet-ului;

Dimensiunile ei sunt mai mari decat ale applet-ului.


Animatia Java


Programele in limbajul Java destinate realizarii efectului de animatie afiseaza la intervale regulate cadre de imagine in care pozitiile relative ale unor obiecte sau portiuni ale acestora variaza progresiv, astfel incat sa se creeze senzatia de miscare.

In practica se utilizeaza doua tipuri de animatie:

afisarea aceleiasi imagini in care un obiect sau o parte a unui obiect se misca,

afisarea unei succesiuni de cadre diferite.

Prima varianta de animatie permite ca utilizand o singura imagine si un program de modelare 3D sa se simuleze miscarea unui obiect sau a unei portiuni din acesta in spatiul interior al acesteia. Practic, imaginea devine o “scena” in cadrul careia obiectul de obicei suprapus se deplaseaza fie liber fie controlat de utilizator (de exemplu, prin miscarea mouse-ului)

A doua varianta presupune achizitionarea in prealabil a setului de imagini ce prezinta miscarea elementelor componente. Aceste imagini trebuie afisate cu o ritmicitate suficient de mare (peste 20 cadre pe minut) astfel incat datorita remanentei pe retina ochiului uman se creeaza iluzia miscarii continue. Atunci cand aplicatia nu necesita obligatoriu obtinerea senzatiei de miscare continua pentru a economisi resursele sistemului se accepta o ritmicitate mai redusa si rezulta o miscare sacadata (efect stroboscopic).

Incarcarea cadrelor de imagine ce compun secventa se face prin utilizarea repetata (intr-un ciclu for) a metodei getImage() prezentata in paragraful anterior. Pentru a fi ulterior afisate secvential ele se plaseaza in ordine intr-un obiect al clasei MediaTracker din pachetul java.awt cu metoda:

public void addImage(Image nume_imagine,int prioritate)

unde, pentru toate imaginile unei secvente, “prioritatea” se ia aceiasi.

De exemplu incarcarea unui numar de N cadre de imagine imag[i] intr-un fir_animatie se poate realiza astfel:

MediaTracker fir_animatie = new MediaTracker(this);

for(i = 0; i < N; i ++)

Dupa ce toate cadrele au fost incarcate, pornirea animatiei se face cu metoda:

public void start()

Iar afisarea acestor cadre este realizata cu metoda drawImage() utilizata la fel ca pentru imaginile statice.

Adica pentru setul de imagini din exemplul anterior pornirea se face cu linia de program:

fir_animatie.start();

iar afisajul cu:

g.drawImage(fir_animatie,0,0,this);

Pe Internet exista cateva site-uri care contin applet-uri animate concepute astfel incat sa permita utilizatorului sa-si utilizeze propria secventa de cadre de imagine. Ele sunt adesea preferate deoarece sunt foarte performante si extrem de usor de utilizat.

T.14.3.2. Raspundeti la urmatoarele intrebari:

1. Animatia Java poate fi realizata cu:

secventa de cadre succesive;

imagine fixa si un obiect miscator suprapus;

Un set de imagini statice.

2. MediaTracker este:

interfata din pachetul java.awt

clasa din pachetul java.awt

clasa derivata din clasa VideoClip

3. Incarcarea unei imagini in obiectul MediaTracker “a” se face cu:

a = Image.addImage(o_imagine,0);

a.getImage(o_imagine,0);

a.addImage(o_imagine,0);

4. Metoda drawImage() este :

Componenta a clasei Applet;

Metoda MediaTracker;

Metoda a clasei Thread.

5. Pornirea unui fir de animatie se face cu metoda:

start();

startApplet();

starMediaTracker().


Concluzii


Sunetele sunt preluate si prelucrate in limbajul Java sub forma de obiecte AudioClip. Metodele destinate manipularii fisierelor sonore sunt componente ale clasei Applet sau ale interfetei AudioClip

Imaginile sunt obiecte ale clasei Image. Prin urmare toate procedurile de manipulare ale imaginilor, pornind de la achizitie si incheind cu afisarea si prelucrarea, se desfasoara conform tipologiei generale de lucru cu obiectele. Pentru toate aceste operatii, in clasele Applet si Graphics s-au definit metode, care permit executarea lor in cadrul applet-urilor.

Programele in limbajul Java destinate realizarii efectului de animatie afiseaza la intervale regulate cadre de imagine in care pozitiile relative ale unor obiecte sau portiuni ale acestora variaza progresiv astfel incat sa se creeze senzatia de miscare.

Pe Internet exista cateva site-uri care contin applet-uri animate concepute astfel incat, sa permita utilizatorului sa-si utilizeze propria secventa de cadre de imagine.


Raspunsuri


T.14.1.1.sunet=getAudioClip(getDocumentBase(),'c:musicausunet.au');

T.14.1.2.play(getDocumentBase(),'c:musicausunet.au ');

T.14.1.3.Se poate rula cu orice fisier sunet de tip .au

T.14.1.4.1. c

T.11.1.2.2. c

T.11.1.2.3. a, b

T.11.1.2.4. a

T.11.1.2.5. b

T.14.2.1.

Image o_imagine=getImage(getDocumentBase(),'c:windowsrivets.bmp

T.14.2.2.

Graphics g;

g.drawImage(o_imagine,10,10,this);

T.14.2.4.1.

T.14.2.4.2.a, b

T.14.2.4.3. c

T.14.2.4.4. b

T.14.2.4.5. a, b

T.14.3.2.1. b

T.14.3.2.2. b

T.14.3.2.3. c

T.14.3.2.4.

T.14.3.2.5. a