Skalabilna vektorska grafika u HTML5. Skalabilna vektorska grafika (SVG) - grafičke oznake istraživanja

Vektorska grafika se široko koristi u štampi. Ali za web stranice, možemo ga koristiti i sa SVG ( Skalabilna vektorska grafika - skalabilna vektorska grafika). Prema W3.org specifikaciji, SVG je definiran kao:

Jezik za opisivanje dvodimenzionalne grafike u XML-u. SVG dozvoljava upotrebu tri tipa objekata: vektorskih grafičkih oblika (na primjer, putanja sačinjenih od pravih linija i krivulja), slika i teksta.

Iako je od avgusta 2011. SVG uključen u W3C preporuke, ovu tehnologiju praktički se ne koristi u web projektima, iako ima niz prednosti u odnosu na bitmape. U ovoj seriji tutorijala predstavićemo vam kako raditi sa SVG elementima na web stranicama.

Prednosti SVG-a

Rezolucija Nezavisnost

Rasterske slike zavise od rezolucije. Grafika postaje nepredstavljiva kada se veličina promijeni na određene razmjere. Kod vektorske grafike takva situacija je u principu nemoguća, jer je sve predstavljeno matematičkim izrazima koji se automatski preračunavaju kada se skala promijeni, a kvalitet je očuvan u svim uvjetima.

Smanjenje broja HTTP zahtjeva

SVG se može ugraditi direktno u HTML dokument koristeći svg tag, tako da pretraživač ne mora biti upitan da posluži grafiku. Ovaj pristup ima dobar učinak na karakteristike učitavanja web stranice.

Stilovi i skripte

Ugrađivanje sa svg oznakom takođe olakšava stilizovanje grafike koristeći CSS. Možete promijeniti svojstva objekta kao što su boja pozadine, prozirnost, ivice i tako dalje. Slično, grafikom se može manipulisati pomoću JavaScript-a.

Jednostavan za uređivanje i animaciju

SVG objekti se mogu animirati koristeći CSS ili JavaScript. Također, SVG objekti se mogu mijenjati pomoću uređivača teksta.

Manja veličina datoteke

SVG ima manju veličinu datoteke u poređenju sa rasterskom grafikom.

Osnovni SVG oblici

Prema specifikaciji možemo nacrtati nekoliko osnovnih oblika: linija, polilinija, pravougaonik, krug, elipsa. Svi elementi moraju biti umetnuti u oznaku ... . Razmotrite osnovne elemente detaljno.

Linija

Element se koristi za crtanje linije u SVG-u . Crta segment za koji se moraju definirati dvije točke: početak i kraj.

Početak segmenta je definiran atributima x1 i y1, a krajnja točka je definirana koordinatama u atributima x2 i y2.

Postoje i dva druga atributa (stroke i stroke-width) koji se koriste za definiranje boje i širine linije, respektivno.

Ovaj objekt je sličan , ali sa elementom Možete nacrtati više linija odjednom.

Element Sadrži atribut točke, koji se koristi za specificiranje koordinata tačaka.

Pravougaonik prikazan elementom . Moramo definirati širinu i visinu.

Da nacrtate krug, koristite element . U sljedećem primjeru kreiramo krug sa radijusom od 100, koji je definiran u atributu r:

Prva dva atributa cx i cy definiraju koordinate centra. U gornjem primjeru postavili smo obje koordinate na 102. Zadana vrijednost je 0.

Da nacrtate elipsu, koristite element . Radi isto kao krug, ali možemo posebno postaviti radijuse x i y koristeći atribute rx i ry:

Element Prikazuje poliedarske oblike kao što su trokut, šesterokut i tako dalje. Na primjer:

Korištenje editora za vektorsku grafiku

Renderovanje jednostavnih SVG objekata u HTML je jednostavno. Međutim, kako se kompleksnost objekta povećava, ova praksa može dovesti do velike količine posla koji treba obaviti.

Ali možete koristiti bilo koji uređivač za vektorsku grafiku (na primjer, Adobe Illustrator ili inkscape) za kreiranje objekata. Ako posjedujete takav alat, mnogo je lakše nacrtati potrebne objekte u njima nego kodirati grafiku u HTML tag.

Možete kopirati komande za vektorsku grafiku iz datoteke u HTML dokument. Ili, možete ugraditi .svg datoteku koristeći jedan od sljedećih elemenata: embed , iframe i object .

Rezultat će biti isti.

Podrška za pretraživač

SVG ima dobru podršku u većini modernih pretraživača, sa izuzetkom IE verzije 8 i ranije. Ali zadatak se može riješiti korištenjem JavaScript biblioteke. Da biste olakšali stvari, možete koristiti ReadySetRaphael.com alat za pretvaranje SVG koda u Raphael format.

Prvo učitavamo i uključujemo biblioteku u HTML dokument. Zatim učitavamo .svg datoteku, kopiramo i zalijepimo rezultirajući kod u funkciju nakon učitavanja:

U body tag postavljamo sljedeći div element sa ID-om rsr.

I sve je spremno.

U sljedećem tutorijalu iz serije, pogledat ćemo kako stilizirati SVG objekte u CSS-u.

(Pregledni članak nakon konferencije o razvoju softvera u Jekaterinburgu i druge prezentacije. Video verzija izvještaja u Jekaterinburgupogledajte techdays.ru )

Šta je HTML5 Canvas i SVG?

HTML5 Canvas

– element je platno za prikazivanje bitmap grafike. U stvari, ovo je prazan blok date dimenzije, na kojoj možete crtati koristeći posebne API-je za JavaScript.

API uključuje 45 posebnih metoda i 21 atribut koji se koristi za prikaz grafičkih primitiva, postavljanje stilova, transformacije, pristup pojedinačnim pikselima, projektne slike i video zapise.

Sebe element je definiran direktno u HTML5 specifikaciji. API za to je opisan u posebnom dokumentu - HTML Canvas 2D Context.

SVG

Muzika može biti zabavna

Prekrasna igra za vizualizaciju muzike (http://musiccanbefun.edankwan.com/).

Primjeri SVG sheme

Dijagram ljudskog skeleta, periodni sistem hemijskih elemenata i respiratorni sistem (http://ie.microsoft.com/testdrive/Graphics/RealWorldDataAndDiagrams/Default.xhtml).

Yandex Maps

Bliži primjer iz stvarnog života je korištenje SVG-a prilikom renderiranja ruta (ako ga pretraživač podržava). Pogledajte i razgovor "Mape i SVG" iz našeg HTML5 kampa.

Više primjera:

  • Beauty of the Web http://www.beautyoftheweb.com/ - stvarne stranice iz stvarnog svijeta
  • Dev: unplugged http://contest.beautyoftheweb.com/ - projekti koji učestvuju u natjecanju za HTML5 aplikacije

Razlika između Canvasa i SVG-a

U različitim scenarijima, ili Canvas ili SVG mogu biti prikladniji za dinamičko prikazivanje grafike - vratit ćemo se na ovo pitanje na kraju. U međuvremenu, fokusirajmo se na ključne razlike između jednog i drugog:

Platno SVG
Format Raster Vector
Skaliranje
Pristup

Individualni pristup pikselima (RGBA)

Pristup pojedinačnim elementima (DOM)

Indeksabilnost i dostupnost

Vidi se samo završni raster (ne možete odabrati oblike, tekst itd.) - loše za pristupačnost

Možete vidjeti strukturu (na primjer, izvucite cijeli tekst)

Stilizacija

Vizuelni stilovi se postavljaju prilikom renderiranja preko API-ja

Vizuelni stilovi su postavljeni atributima, možete uključiti CSS

Programiranje

JS API za rad sa primitivima

DOM za rad sa elementima

Ažuriraj

Za ažuriranje - precrtajte ili potpuno precrtajte

Moguće je mijenjati pojedine elemente

Razvoj

Ne postoji jednostavan način za rukovanje događajima miša. Objekti ispod kursora moraju se definirati ručno.

Događaji od miša preko DOM-a se lako spuštaju, obrađuju se automatski.

Integracija koda

JS kod odvojen od Canvasa

Možete uključiti JS unutra

Ove razlike se moraju uzeti u obzir kada se koristi određena tehnologija za vizualizaciju podataka. Na primjer, crtanje grafa funkcije može biti lakše sa Canvas-om, dok je prikazivanje savjeta (sa definicijom objekta ispod pokazivača miša) lakše sa SVG-om.

U praksi, međutim, već postoji niz gotovih biblioteka za vizualizaciju podataka koje djelimično nadoknađuju ove razlike.

Neću ulaziti u osnove rada sa svakom od tehnologija, kao uvod preporučujem izvještaj Vadima Makeeva (Opera) sa HTML5 kampa „Dinamička grafika: Canvas i SVG“.

Pogledajte i izvještaje MIX 2011:

Obrada slike sa platnom

Jedna od značajnih karakteristika Canvas-a je da ova tehnologija omogućava piksel po piksel pristup prikazanim podacima i omogućava da se različiti grafički elementi, uključujući video, projektuju na platno.

Dobar primjer gdje je to potrebno je u zadatku obrade/analize slike.

Processing.js nudi dva pristupa opisu vizualizacije: srednji kod, koji dalje analizira sama biblioteka (u zasebnom fajlu ili unutar stranice) i eksplicitni JavaScript kod.

Na primjer, da nacrtate fraktalni Mandelbrotov skup, možete koristiti ili opciju navedenu na stranici s odgovarajućim primjerom ili sljedeći JavaScript kod:

var xmin = -2,5; varymin = -2; var wh = 4; funkcija sketchProc(processing) ( Processing.setup = funkcija () ( Processing.size(200, 200); Processing.noLoop(); ); Processing.draw = function () ( Processing.loadPixels(); var maxiterations = 200; var xmax = xmin + wh; var ymax = ymin + wh; var dx = (xmax - xmin) / (širina obrade); var dy = (ymax - ymin) / (visina obrade); var y = ymin; za (var j = 0; j< processing.height; j++) { var x = xmin; for (var i = 0; i < processing.width; i++) { var a = x; var b = y; var n = 0; while (n < maxiterations) { var aa = a * a; var bb = b * b; var twoab = 2.0 * a * b; a = aa - bb + x; b = twoab + y; if (aa + bb >16.0) (prekid ; ) n++; ) if (n == maksiteracije) process.pixels.setPixel(i+j*processing.width, 0); ostalo process.pixels.setPixel(i+j*processing.width, processing.color(n*16 % 255)); x += dx; ) y += dy; ) process.updatePixels(); ); ) var canvas = document.getElementById("myCanvas"); var p = nova obrada(platno, sketchProc);

Možete i sami isprobati ovdje: http://silverbook.ru/projects/html5datavisualization/demo3-processingjs.htm (kopirajte kod, zalijepite ga u konzolu i izvršite).

JavaScript InfoVis Toolkit (JIT)

Za prikaz podataka, JIT prihvata sirove vrijednosti kao JSON:

var json = ( "oznaka" : ["oznaka A", "oznaka B", "oznaka C", "oznaka D" ], "vrijednosti" : [ ( "oznaka" : "datum A", "vrijednosti": ) , ( "oznaka" : "datum B" , "vrijednosti" : ), ( "oznaka" : "datum E" , "vrijednosti" : ), ( "oznaka" : "datum F" , "vrijednosti" : ), ( "label" : "datum D" , "vrijednosti" : ), ( "label" : "datum C", "vrijednosti" : )] ); var pieChart = new $jit.PieChart(( injectInto: "infovis" , animate: true , offset: 30, sliceOffset: 0, labelOffset: 20, tip: "stacked:gradient" , showLabels:true , resizeLabels: 7, Label: ( tip: "Native" , veličina: 20, porodica: "Arial" , boja: "white" ), Savjeti: ( omogućiti: true , onShow: funkcija (tip, elem) ( tip.innerHTML = " "+ elem.name + ": " + elem.value; ) ) ));

dovoljno je nazvati crtež:

PieChart.loadJSON(json);

jQuery Sparklines

Vizualizacija karte sa SVG

Pređimo na SVG i počnimo s jednostavnim primjerom. Zamislite da trebate prikazati neke podatke na mapi regija, koji je najlakši način da to učinite?

Ako imate gotovu kartu u obliku SVG (mapu Rusije sam uzeo sa stranice Wikipedia), onda se to radi vrlo jednostavno - dovoljno je da svaka regija ima svoj jedinstveni ID unutar SVG dokumenta, onda ubacujemo mapu kao inline svg i bojimo je jednostavnim kodom u pravu boju:

var SverdlovskOblast = document.getElementById("SverdlovskOblast" ); SverdlovskOblast.style.fill = "#fe3300" ;

Ako učinite isto u petlji, tada već možete obojiti ne samo regiju, već cijelu regiju ili čak cijelu zemlju:

var data = [(id: "KurganOblast" , vrijednost: 30), (id: "SverdlovskOblast" , vrijednost: 200), (id: "TyumenOblast" , vrijednost: 75), (id: "KhantiaMansia" , vrijednost: 100 ), (id: "YamaloNenetsAutDistrict" , vrijednost: 20), (id: "ChelyabinskOblast" , vrijednost: 150)]; za (var i = 0; i< data.length; i++) { var item = data[i]; var region = document.getElementById(item.id); region.style.fill = RGBtoHex(item.value, 0, 0); }

Biblioteke za vizualizaciju podataka sa SVG

Kao što sam rekao, i Canvas i SVG su pogodni za rješavanje tradicionalnog zadatka vizualizacije numeričkih podataka u obliku grafikona i grafikona. U oba slučaja, to je prilično lako uraditi sa odgovarajućim bibliotekama.

Već smo pogledali Canvas primjere, sada pogledajmo nekoliko biblioteka za rad sa SVG-om. (Ovo također nije potpuna lista, već kvalitetna i popularna rješenja.)

Raphael

Za dodavanje jednostavnog tortni grafikon dovoljno koda ovako:

var r = Raphael("grafikon", 640, 480); var pie = r.g.piechart(320, 240, 100, );

Uz nekoliko dodatnih operacija, možete dodati legendu, natpise grafikona i interaktivne opise alata:

var r = Raphael("grafikon", 640, 480); r.g.txtattr.font = "12px "Fontin Sans", Fontin-Sans, sans-serif"; r.g.text(320, 100, "Interaktivni tortni grafikon" ).attr(("font-size" : 20)); var pie = r.g.piechart(320, 240, 100, ,
(legenda: ["%%.%% – Enterprise Users" , "IE Users" ], legenda: "west" ,
href: ["http://raphaeljs.com" , http://g.raphaeljs.com]});
pie.hover(function () (ovaj .sector.stop(); ovaj .sector.scale(1.1, 1.1, ovaj .cx, ovaj .cy); if (ova .oznaka) (ova .label.stop(); this .label.scale(1.5); this .label.attr(("font-weight" : 800)); ) ), function () (ovaj .sector.animate((scale: ), 500, "bounce" ) ; if (ova .label) (ova .label.animate((skala: 1), 500, "bounce" ); ovo .label.attr(("font-weight" : 400)); ) ));

Slično, možete prikazati druge tipove grafikona koristeći odgovarajuće metode. Pogledajte primjere direktno na stranici proširenja http://g.raphaeljs.com/

HighchartsJS

API biblioteke olakšava generiranje grafikona iz podataka u JSON-u:

var chart1 = novi Highcharts.Chart(( grafikon: ( renderTo: "charts" , defaultSeriesType: "bar"), title: (tekst: "Potrošnja voća"), xAxis: ( kategorije: ["Jabuke" , "Banane" , "Narandže" ] ), yAxis: ( naslov: ( tekst: "Voće jedeno" ) ), serija: [( ime: "Jane" , podaci: ), ( ime: "John" , podaci: )] ));

Uz malo složeniju skriptu, možete odrediti dodatne detalje, na primjer, prikazati legendu, postaviti opise alata:

var chart = new Highcharts.Chart(( grafikon: ( renderTo: "charts" , defaultSeriesType: "area" , proredBottom: 30 ), title: ( tekst: "Potrošnja voća *" ), podnaslov: ( tekst: "* Janeina potrošnja banana je nepoznata", plutajući: true , poravnati: "desno" , okomitoPoravnati: "dno" , y: 15 ), legenda: ( raspored: "vertikalno" , poravnati: "lijevo" , okomito poravnati: "vrh" , x: 150, y: 100 , floating: true , borderWidth: 1, backgroundColor: "#FFFFFF" ), xAxis: ( kategorije: ["Jabuke" , "Kruške" , "Narandže" , "Banane" , "Grožđe" , "Šljive" , "Jagode" , "Maline" ] ), yAxis: ( naslov: ( tekst: "Y-Axis" ), oznake: ( formater: funkcija () ( vrati ovu .value; ) ) ), opis alata: ( formater: funkcija () ( povratak " "+this.series.name+"
" + ovo .x +": " + ovo .y; ) ), plotOptions: ( oblast: ( fillOpacity: 0,5 ) ), serija: [( ime: "John" , podaci: ), ( ime: "Jane" , podaci: )] ));

Ako je potrebno, možete zamijeniti zadane stilove vlastitim.

Šta odabrati: Canvas ili SVG?

Kao što možete vidjeti iz gornjih primjera, obje tehnologije su često prikladne za zadatke vizualizacije podataka. Mnoge stvari se rade na sličan način. U slučajevima kada je potreban izlaz piksel po piksel, Canvas je očigledno bolji. Tamo gdje se dijagram dijeli na zasebne objekte koji moraju biti interaktivni, SVG je prikladniji.

Platno je bolje
  • Uređivanje bitmap grafike
  • Primjena efekata na grafiku/video
  • Generacija rasterske grafike (vizuelizacija podataka, fraktali, grafovi funkcija)
  • Analiza slike
  • Grafika igre (sprijtovi, pozadina, itd.)
SVG je bolji
  • Skalabilni interfejsi
  • Interaktivni interfejsi
  • Dijagrami, šeme
  • Uređivanje vektorskih slika

U grafičkom obliku to se može predstaviti na sljedeći način:

Konačno, još jedan važan rez koji je također važno uzeti u obzir pri odabiru tehnologije je renderiranje performansi kada se koristi Canvas i SVG:

U praksi, platno bolje funkcionira s malim veličinama područja renderiranja i velikim brojem objekata, u SVG-u je pogodnije za skaliranje ili prikazivanje na velikom ekranu i ne previše u velikom broju izlaze objekte u isto vrijeme.

Ovaj zaključak proizilazi iz izvještaja predsjednika uprave Bašnjefta, objavljenog na skupštini dioničara kompanije, čija je kopija stavljena na raspolaganje urednicima.

Iz dokumenta proizilazi da je kao rezultat geoloških istraživanja u 2018. godini otkriveno 81 produktivno ležište sa rezervama od 19 miliona tona.

Istovremeno, korištenje visoko efikasnih geoloških i tehničkih mjera i uvođenje modernih tehnologija za povećanu iskorištavanje nafte omogućilo je održavanje proizvodnje nafte na zrelim poljima u Baškiriji na nivou od 15 miliona tona iz 2017. po rezultatima od 11 mjeseci. . Ukupan obim proizvodnje za navedeni period iznosio je 17,3 miliona tona nafte.

U izvještaju se također navodi da je stvaranje jedinstvenog proizvodnog lanca sa proizvodnim i prerađivačkim kompleksom Rosnjefta povećalo efikasnost rafinerija u Ufi i dovelo do smanjenja operativnih i logističkih troškova. Konkretno, savladana je proizvodnja Euro-6 benzina i započeta industrijska proizvodnja putnog bitumena u skladu sa novim GOST-om.

Obim maloprodaje na benzinskim stanicama Bašnjefta za 11 meseci 2018. godine povećan je za 13,2 odsto u odnosu na isti period prošle godine i dostigao je 1,7 miliona tona.

Za implementaciju strategije u oblasti petrohemije vrši se modernizacija petrohemijske proizvodnje. Tako je u maju 2018. godine Ufaorgsintez pušten u rad nova instalacija proizvodnja kumona - sirovina za proizvodnju boja, otapala, raznih polimera koji se koriste u automobilskoj industriji, medicini i farmakologiji. Sljedeća je na redu rekonstrukcija kompleksa za proizvodnju aromatika u Ufaneftekhimu, izgradnja novih proizvodnih pogona olefina u Ufaorgsintezu.

Konsolidovani pokazatelj operativne dobiti za 9 mjeseci 2018. godine povećan je za 22,6 posto u odnosu na isti period 2017. godine i iznosio je 135,5 milijardi rubalja. Neto dobit "Bašnjefta" dostigla je 74,6 milijardi rubalja, što je 73,5 odsto više nego u istom periodu prošle godine.

Tokom trećeg kvartala, Bashneft je akcionarima isplatio dividende objavljene na godišnjoj skupštini u junu 2018. u iznosu od 28,2 milijarde rubalja, a ukupan iznos isplaćenih dividendi od početka godine iznosio je 43 milijarde rubalja.

Istovremeno, nivo neto duga kompanije je smanjen i na dan 30. septembra 2018. iznosio je 40,1 milijardu rubalja (od istog datuma 2017. ova brojka je iznosila 104,7 milijardi rubalja).

Istovremeno, tokom izvještajnog perioda, poreski odbici u budžet Baškortostana, uzimajući u obzir jednokratnu uplatu poreza na dohodak, porasli su 1,5 puta u odnosu na isti period prošle godine i iznosili su 50,5 milijardi rubalja.

Postoji oznaka za uključivanje slike na određeno mjesto na stranici. . Ova oznaka ima obavezan parametar: SRC="", i nekoliko opcionih. SRC="" parametar govori pretraživaču gdje da traži grafiku i treba da ima kao vrijednost URL resursa na kojem se grafička datoteka nalazi. U najjednostavnijem slučaju, ova datoteka će biti smještena u korijenski direktorij ili u IMG folder vaše stranice. Opcioni parametri:

Parametar ALT="" sadrži natpis kao vrijednost koja govori o sadržaju slike za one posjetitelje čiji pretraživači ne podržavaju grafiku ili rade u onemogućenom grafičkom načinu. Isti natpis se pojavljuje kada pređete mišem preko slike.

Parametri WIDTH="" HEIGHT="" kao vrijednosti imaju dimenzije slike u smislu širine i visine u pikselima. Poželjno je ove parametre navesti u kodu stranice kako bi pretraživač unaprijed ostavio prostor za sliku, a zatim će se pri učitavanju stranica manje "trzati". Osim toga, ovi parametri se mogu koristiti za podešavanje veličine slike u prozoru pretraživača.

Parametar BORDER="" crta ivicu oko slike. Vrijednost je broj koji označava širinu okvira u pikselima.

Parametar ALIGN= određuje položaj slike na stranici i može imati vrijednosti TOP - poravnava gornju ivicu slike sa najvišim elementom tekuće linije, TEXTTOP - poravnava gornju ivicu slike sa najvišim tekstualni element tekuće linije, MIDDLE - poravnava sredinu slike sa baznom linijom tekuće linije, ABSMIDDLE - poravnava sredinu slike sa sredinom tekuće linije. BASELINE ili BOTTOM - poravnava donju ivicu slike sa osnovnom linijom trenutne linije, ABSBOTTOM - poravnava donju ivicu slike sa donjom ivicom trenutne linije, HSPACE= - definiše horizontalnu uvlaku, VSPACE= - definiše vertikalna uvlaka.

Sintaksa oznake:

Ticker

Tekuća linija je postavljena oznakom .

Atributi ove oznake su bgcolor - boja pozadine linije koja se pomiče, visina - visina linije, širina - širina linije.

Smjer - postavlja smjer kretanja tikera - direction="lijevo" (desno, gore, dolje) - kretanje lijevo (desno, gore, dolje).

Ponašanje - ponašanje niza - ponašanje="scroll" (slajd, alternativno). Scroll - normalno pomicanje (ne možete ga propisati, to je zadano)



Klizanje - skrolovanje sa zaustavljanjem, linija ide do ivice i zaustavlja se. Ako se parametar petlje koristi istovremeno sa behavor="slide" , tada će linija skrolovati postavljeni broj puta i zaustaviti se na rubu. Alternativno - linija će se pomicati od ruba do ruba.
Scrollamount - brzina linije, scrollamount="1". Može imati vrijednosti od 1 do 10. 1 je najsporije kretanje, 10 je najbrže.

Sintaksa oznake: tekst

Moderni web pretraživači mogu reproducirati video i audio datoteke u različitim formatima. Da bi to učinili, koriste ugrađene plejere (dodatke, ActiveX kontrole) ili eksterne programe za plejer. Možete umetnuti zvuk ili video u HTML dokument koristeći različite oznake:

- za umetanje pozadinskog zvuka;

- za umetanje video zapisa u AVI formatu;

- za umetanje zvučnih i video datoteka;

- za umetanje zvučnih i video datoteka.

Kada odlučite da ugradite audio i/ili video u HTML dokument, imajte na umu da su odgovarajuće datoteke prilično velike. Najpopularniji na webu sada su MP3, WMA, AIFF, AU, RealAudio (ra i ram), MP4, MIDI i MPEG, MOV video formati. WAV audio format i AVI video format se rijetko koriste na Internetu.