Grafica vettoriale scalabile in HTML5. Grafica vettoriale scalabile (SVG): esplorazione dei tag grafici

La grafica vettoriale è ampiamente utilizzata nella stampa. Ma possiamo usarlo anche per i siti web che utilizzano SVG ( Grafica vettoriale scalabile (grafica vettoriale scalabile). Secondo le specifiche W3.org, SVG è definito come:

Un linguaggio per descrivere la grafica bidimensionale in XML. SVG consente tre tipi di oggetti: grafica vettoriale (come tracciati costituiti da linee rette e curve), immagini e testo.

Sebbene SVG sia stato incluso nelle raccomandazioni del W3C dall'agosto 2011, questa tecnologia praticamente non utilizzato nei progetti web, sebbene presenti dei vantaggi immagini raster diversi vantaggi. In questa serie di lezioni introdurremo come lavorare con gli elementi SVG sulle pagine web.

Vantaggi dell'SVG

Indipendenza della risoluzione

Le immagini raster dipendono dalla risoluzione. La grafica assume un aspetto impresentabile quando viene ridimensionata a una determinata scala. Con la grafica vettoriale, questa situazione è in linea di principio impossibile, poiché tutto è rappresentato da espressioni matematiche che vengono ricalcolate automaticamente quando si cambia la scala e la qualità viene mantenuta in qualsiasi condizione.

Ridurre il numero di richieste HTTP

SVG può essere incorporato direttamente in un documento HTML utilizzando il tag SVG, quindi il browser non deve effettuare alcuna richiesta per servire la grafica. Questo approccio ha un buon effetto sulle caratteristiche di caricamento del sito web.

Stili e script

L'incorporamento tramite il tag SVG semplifica inoltre la definizione degli stili per la grafica utilizzando i CSS. Puoi modificare le proprietà dell'oggetto come il colore di sfondo, la trasparenza, i bordi e così via. La grafica può essere manipolata in modo simile utilizzando JavaScript.

Facile da modificare e animare

Gli oggetti SVG possono essere animati utilizzando CSS o JavaScript. Gli oggetti SVG possono anche essere modificati utilizzando un editor di testo.

Dimensioni del file più piccole

SVG ha una dimensione di file inferiore rispetto alla grafica raster.

Forme SVG di base

Secondo le specifiche, possiamo disegnare diverse forme base: linea, polilinea, rettangolo, cerchio, ellisse. Tutti gli elementi devono essere inseriti nel tag ... . Vediamo nel dettaglio gli elementi fondamentali.

Linea

Per visualizzare una riga in SVG, utilizzare l'elemento . Disegna un segmento per il quale è necessario determinare due punti: l'inizio e la fine.

L'inizio del segmento è determinato dagli attributi x1 e y1 e il punto finale è determinato dalle coordinate negli attributi x2 e y2.

Ci sono anche altri due attributi (tratto e larghezza del tratto) che vengono utilizzati per definire rispettivamente il colore e lo spessore della linea.

Questo oggetto è simile a , ma utilizzando l'elemento Puoi disegnare più linee contemporaneamente.

Elemento Contiene l'attributo points, utilizzato per specificare le coordinate dei punti.

Il rettangolo viene disegnato utilizzando l'elemento . È necessario determinare la larghezza e l'altezza.

Per visualizzare un cerchio utilizziamo l'elemento . Nell'esempio seguente creiamo un cerchio con un raggio di 100, definito nell'attributo r:

I primi due attributi cx e cy definiscono le coordinate del centro. Nell'esempio sopra, impostiamo il valore su 102 per entrambe le coordinate. Il valore predefinito è 0.

Per visualizzare un'ellisse utilizziamo l'elemento . Funziona allo stesso modo di circle, ma possiamo specificare specificatamente i raggi xey utilizzando gli attributi rx e ry:

Elemento Visualizza forme poliedriche come triangolo, esagono, ecc. Per esempio:

Utilizzando un editor di grafica vettoriale

L'output di semplici oggetti SVG in HTML è semplice. Tuttavia, man mano che la complessità dell’oggetto aumenta, questa pratica può comportare una grande quantità di lavoro richiesto.

Ma puoi utilizzare qualsiasi editor di grafica vettoriale (ad esempio, Adobe Illustrator O Inkscape) per creare oggetti. Se disponi di uno strumento come questo, disegnare gli oggetti necessari al loro interno è molto più semplice che codificare la grafica in un tag HTML.

È possibile copiare comandi di grafica vettoriale da un file in un documento HTML. Oppure puoi incorporare il file .svg utilizzando uno dei seguenti elementi: embed , iframe e object .

Il risultato sarà lo stesso.

Supporto del browser

SVG ha un buon supporto nella maggior parte dei browser moderni, ad eccezione di IE versione 8 e precedenti. Ma il problema può essere risolto utilizzando la libreria JavaScript. Per semplificare le cose, puoi utilizzare lo strumento ReadySetRaphael.com per convertire il codice SVG nel formato Raphael.

Per prima cosa scarichiamo e includiamo la libreria nel documento HTML. Quindi carichiamo il file .svg, copiamo e incolliamo il codice risultante nella funzione dopo il caricamento:

Nel tag body inseriamo il seguente elemento div con l'identificatore rsr .

E tutto è pronto.

Nel prossimo tutorial della serie, vedremo come applicare uno stile agli oggetti SVG nei CSS.

(Articolo di revisione successivo alla conferenza sullo sviluppo del software a Ekaterinburg e altre presentazioni. Versione video del rapporto a Ekaterinburgvedere su techdays.ru )

Cosa sono HTML5 Canvas e SVG?

Tela HTML5

– l'elemento è una tela per disegnare grafica raster. In effetti, è un blocco vuoto date dimensioni, su cui puoi disegnare utilizzando apposite API per JavaScript.

L'API include 45 metodi speciali e 21 attributi utilizzati per visualizzare primitive grafiche, impostare stili, trasformazioni, accedere a singoli pixel e proiettare immagini e video.

Me stessa L'elemento è definito direttamente nella specifica HTML5. L'API è descritta in un documento separato: HTML Canvas 2D Context.

SVG

La musica può essere divertente

Bellissimo gioco di visualizzazione musicale e grafica (http://musiccanbefun.edankwan.com/).

Esempi di diagrammi in SVG

Schema dello scheletro umano, sistema periodico di elementi chimici e sistema respiratorio (http://ie.microsoft.com/testdrive/Graphics/RealWorldDataAndDiagrams/Default.xhtml).

Mappe Yandex

Un esempio più vicino alla vita reale è quando si disegnano percorsi utilizzando SVG (se il browser lo supporta). Vedi anche la conferenza "Mappe e SVG" dal nostro campo HTML5.

Altri esempi:

  • Beauty of the Web http://www.beautyoftheweb.com/ – siti reali dal mondo reale
  • Dev: unplugged http://contest.beautyoftheweb.com/ – progetti che partecipano al concorso per applicazioni HTML5

Differenza tra Canvas e SVG

In vari scenari, Canvas o SVG potrebbero essere più adatti per il rendering della grafica dinamica: torneremo su questo problema alla fine. Per ora, diamo un'occhiata alle principali differenze tra l'uno e l'altro:

Tela SVG
Formato Raster Vettore
Ridimensionamento
Accesso

Accesso pixel individuale (RGBA)

Accesso ai singoli elementi (DOM)

Indicizzabilità e accessibilità

È visibile solo il raster finale (non è possibile selezionare forme, testo, ecc.), il che è dannoso per l'accessibilità

Puoi visualizzare la struttura (ad esempio, estrarre tutto il testo)

Stilizzazione

Gli stili visivi vengono impostati durante il rendering tramite l'API

Gli stili visivi sono impostati dagli attributi, puoi includere CSS

Programmazione

API JS per lavorare con le primitive

DOM per lavorare con gli elementi

Aggiornamento

Per aggiornare: disegnare sopra o ridisegnare completamente

È possibile modificare i singoli elementi

Eventi

Non esiste un modo semplice per gestire gli eventi del mouse. Gli oggetti sotto il cursore devono essere identificati manualmente.

Gli eventi del mouse vengono facilmente inviati tramite il DOM ed elaborati automaticamente.

Integrazione del codice

Codice JS separato da Canvas

Puoi includere JS all'interno

Queste differenze devono essere prese in considerazione quando si utilizza l'una o l'altra tecnologia per la visualizzazione dei dati. Ad esempio, disegnare il grafico di una funzione può essere più semplice con Canvas, mentre visualizzare le descrizioni comandi (identificando l'oggetto sotto il puntatore del mouse) è più semplice con SVG.

In pratica, tuttavia, esistono già numerose librerie già pronte per la visualizzazione dei dati che neutralizzano parzialmente queste differenze.

Non entrerò nei fondamenti del lavoro con ciascuna tecnologia; come introduzione, raccomando la relazione di Vadim Makeev (Opera) del campo HTML5 “Dynamic Graphics: Canvas e SVG”.

Vedi anche i report MIX 2011:

Elaborazione delle immagini con Canvas

Una delle caratteristiche degne di nota di Canvas è che questa tecnologia fornisce l'accesso pixel per pixel ai dati visualizzati e consente di proiettare vari elementi grafici, inclusi video, sulla tela.

Un buon esempio di dove ciò è necessario è un'attività di elaborazione/analisi di immagini.

Processing.js offre due approcci per descrivere la visualizzazione: codice intermedio, che viene ulteriormente analizzato dalla libreria stessa (in un file separato o all'interno di una pagina) e codice JavaScript esplicito.

Ad esempio, per disegnare un frattale dell'insieme di Mandelbrot, puoi utilizzare sia l'opzione indicata nella pagina con l'esempio corrispondente, sia il seguente codice JavaScript:

varxmin = -2,5; var ymin = -2; var wh = 4; funzione sketchProc(elaborazione) ( elaborazione.setup = funzione () ( elaborazione.size(200, 200); elaborazione.noLoop(); ); elaborazione.draw = funzione () ( elaborazione.loadPixels(); var maxiterazioni = 200; var xmax = xmin + var ymax = ymin + var dx = (xmax - xmin) / (elaborazione.larghezza);< 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) (interruzione;) n++; ) if (n == maxiterazioni) processing.pixels.setPixel(i+j*processing.width, 0); altrimenti elaborazione.pixels.setPixel(i+j*elaborazione.larghezza, elaborazione.colore(n*16 % 255)); x += dx; ) y += dy; ) elaborazione.updatePixels(); ); ) var canvas = document.getElementById("myCanvas" ); var p = new Processing(canvas, sketchProc);

Puoi provarlo tu stesso qui: http://silverbook.ru/projects/html5datavisualization/demo3-processingjs.htm (copia il codice, incollalo nella console ed esegui).

JavaScript InfoVis Toolkit (JIT)

Per visualizzare i dati, JIT accetta i valori grezzi come JSON:

var json = ( "etichetta" : ["etichetta A" , "etichetta B" , "etichetta C" , "etichetta D" ], "valori" : [ ( "etichetta" : "data A" , "valori" : ) , ( "etichetta" : "data B" , "valori" : ), ( "etichetta" : "data E" , "valori" : ), ( "etichetta" : "data F" , "valori" : ), ( "etichetta" : "data D" , "valori" : ), ( "etichetta" : "data C" , "valori" : )] ); var pieChart = new $jit.PieChart(( injectInto: "infovis" , animate: true , offset: 30, sliceOffset: 0, labelOffset: 20, type: "stacked:gradient" , showLabels:true , resizeLabels: 7, Label: ( tipo: "Nativo", dimensione: 20, famiglia: "Arial", colore: "bianco" ), Suggerimenti: ( abilita: true , onShow: funzione (tip, elem) ( tip.innerHTML = " " + nome.elem. + ": " + valore elem.; ) ) ));

basta chiamare il rendering:

Grafico a torta.loadJSON(json);

jQuery Sparkline

Visualizzazione su una mappa utilizzando SVG

Passiamo a SVG e iniziamo con semplice esempio. Immagina di dover visualizzare alcuni dati su una mappa delle regioni, qual è il modo più semplice per farlo?

Se disponi di una mappa già pronta sotto forma di SVG (ho preso la mappa della Russia dal sito Wikipedia), allora questo viene fatto in modo molto semplice: è sufficiente che ogni regione abbia il proprio ID univoco all'interno del documento SVG, quindi inserisci la mappa come SVG in linea e colorala con un semplice codice nel colore desiderato:

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

Se fai la stessa cosa in un ciclo, puoi colorare non solo un'area, ma un'intera regione o addirittura un intero paese:

var data = [(id: "KurganOblast" , valore: 30), (id: "SverdlovskOblast" , valore: 200), (id: "TyumenOblast" , valore: 75), (id: "KhantiaMansia" , valore: 100 ), (id: "YamaloNenetsAutDistrict" , valore: 20), (id: "ChelyabinskOblast" , valore: 150)]; per (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); }

Librerie per la visualizzazione dei dati utilizzando SVG

Come ho già detto, sia Canvas che SVG sono adatti a risolvere il tradizionale problema di visualizzare dati numerici sotto forma di grafici e tabelle. In entrambi i casi, ciò può essere fatto abbastanza facilmente utilizzando le librerie appropriate.

Abbiamo già visto esempi con Canvas, ora consideriamo diverse librerie per lavorare con SVG. (Anche questo non è un elenco esaustivo, ma soluzioni popolari e di alta qualità.)

Raffaello

Per aggiungere un semplice Grafico a tortaÈ sufficiente il seguente codice:

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

Con pochi passaggi aggiuntivi puoi aggiungere una legenda, didascalie del grafico e descrizioni comandi interattive:

var r = Raffaello("schema", 640, 480); r.g.txtattr.font = "12px "Fontin Sans", Fontin-Sans, sans-serif"; r.g.text(320, 100, "Grafico a torta interattivo").attr(("font-size" : 20)); var torta = r.g.piechart(320, 240, 100, ,
(legenda: ["%%.%% – Utenti aziendali" , "Utenti IE" ], legendpos: "ovest" ,
href: ["http://raphaeljs.com" , http://g.raphaeljs.com]});
pie.hover(funzione () ( questo .sector.stop(); questo .sector.scale(1.1, 1.1, questo .cx, questo .cy); if (questo .label) ( questo .label.stop(); this .label.scale(1.5); this .label.attr(("font-weight" : 800) ) ), funzione () ( this .sector.animate((scale: ), 500, "bounce" ) ; if (questo .label) ( questo .label.animate((scala: 1), 500, "rimbalzo" ); questo .label.attr(("font-weight" : 400)); ) );

Altri tipi di grafici possono essere prodotti in modo simile utilizzando metodi appropriati. Guarda gli esempi direttamente sul sito delle estensioni http://g.raphaeljs.com/

HighchartsJS

L'API della libreria semplifica la generazione di un grafico utilizzando i dati in JSON:

var chart1 = new Highcharts.Chart(( grafico: ( renderTo: "grafici", defaultSeriesType: "bar" ), titolo: ( testo: "Consumo di frutta" ), xAxis: ( categorie: ["Mele" , "Banane" , "Arance" ]), Asse y: ( titolo: ( testo: "Frutta mangiata" ) ), serie: [( nome: "Jane" , dati: ), ( nome: "John" , dati: )] ));

Con uno script leggermente più complesso, puoi specificare dettagli aggiuntivi, ad esempio visualizzare una legenda, configurare i suggerimenti:

var chart = new Highcharts.Chart(( grafico: ( renderTo: "grafici" , defaultSeriesType: "area" , spacingBottom: 30 ), titolo: ( testo: "Consumo di frutta *" ), sottotitolo: ( testo: "* Il consumo di banane di Jane è sconosciuto", mobile: true , allinea: "destra" , verticalAlign: "bottom" , y: 15 ), legenda: ( layout: "verticale" , allinea: "left" , verticalAlign: "top" , x: 150, y: 100 , float: true , borderWidth: 1, backgroundColor: "#FFFFFF" ), xAxis: ( categorie: ["Mele" , "Pere" , "Arance" , "Banane" , "Uva" , "Susine" , "Fragole" , "Lamponi" ] ), Asse y: ( titolo: ( testo: "Asse Y" ), etichette: ( formattatore: funzione () ( restituisce questo .valore; ) ) ), descrizione comando: ( formattatore: funzione () ( restituisce " "+questo.nome.serie+"
" + this .x +": " + this .y; ) ), plotOptions: ( area: ( fillOpacity: 0.5 ) ), serie: [( nome: "John" , dati: ), ( nome: "Jane" , dati: )] ));

Se necessario, puoi sostituire gli stili predefiniti con i tuoi.

Dovresti scegliere Canvas o SVG?

Come si può vedere dagli esempi sopra, entrambe le tecnologie sono spesso adatte per attività di visualizzazione dei dati. Molte cose vengono fatte in modo simile. Nei casi in cui è necessario l'output pixel per pixel, Canvas è ovviamente più adatto. Laddove il diagramma si suddivide in singoli oggetti in cui è necessario mantenere l'interattività, SVG è più adatto.

La tela è migliore
  • Modifica della grafica raster
  • Aggiunta di effetti a grafica/video
  • Generazione di grafica raster (visualizzazione dati, frattali, grafici di funzioni)
  • Analisi delle immagini
  • Grafica del gioco (sprites, sfondo, ecc.)
SVG è migliore
  • Interfacce scalabili
  • Interfacce interattive
  • Diagrammi, diagrammi
  • Modifica di immagini vettoriali

In forma grafica ciò può essere rappresentato come segue:

Infine, un altro aspetto importante da considerare quando si sceglie una tecnologia sono le prestazioni di rendering quando si utilizzano Canvas e SVG:

In pratica Canvas funziona meglio quando l'area di disegno è piccola e su un gran numero di oggetti; SVG è più adatto quando è necessario ridimensionare o visualizzare su uno schermo grande e non troppo grande. grandi quantità oggetti visualizzati alla volta.

Questa conclusione deriva dalla relazione del presidente del consiglio di amministrazione di Bashneft, annunciata all'assemblea generale degli azionisti della società, una copia della quale è stata ricevuta dalla redazione.

Dal documento risulta che a seguito dell'esplorazione geologica, nel 2018 sono stati scoperti 81 giacimenti produttivi con riserve per 19 milioni di tonnellate.

Allo stesso tempo, l'uso di misure geologiche e tecniche altamente efficaci e l'introduzione tecnologie moderne L’aumento del recupero del petrolio ha permesso di mantenere la produzione di petrolio nei giacimenti maturi della Bashkiria al livello del 2017 per 11 mesi – 15 milioni di tonnellate. Il volume di produzione totale per questo periodo ammontava a 17,3 milioni di tonnellate di petrolio.

Il rapporto rileva inoltre che la creazione di un'unica catena di produzione con il complesso di produzione e raffinazione di Rosneft ha aumentato l'efficienza delle raffinerie di Ufa e ha portato ad una riduzione dei costi operativi e logistici. In particolare, è stata padroneggiata la produzione di benzina Euro 6 ed è iniziata la produzione industriale di bitume stradale secondo il nuovo GOST.

Il volume delle vendite al dettaglio presso le stazioni di servizio Bashneft negli 11 mesi del 2018 è aumentato del 13,2% rispetto allo stesso periodo dell'anno scorso e ha raggiunto 1,7 milioni di tonnellate.

Per attuare la strategia petrolchimica, la produzione petrolchimica viene modernizzata. Così, nel maggio 2018, Ufaorgsintez è entrato in funzione nuova installazione produzione di cumene - materia prima per la produzione di vernici, solventi, vari polimeri utilizzati nell'industria automobilistica, nella medicina e nella farmacologia. Il prossimo passo è la ricostruzione del complesso di produzione degli aromatici a Ufaneftekhim e la costruzione di nuovi impianti di produzione di olefine a Ufaorgsintez.

L’utile operativo consolidato per i 9 mesi del 2018 è aumentato del 22,6% rispetto allo stesso periodo del 2017 e ammonta a 135,5 miliardi di rubli. L'utile netto di Bashneft ha raggiunto i 74,6 miliardi di rubli, ovvero il 73,5% in più rispetto allo scorso anno.

Nel corso del terzo trimestre Bashneft ha pagato agli azionisti i dividendi annunciati all’assemblea annuale di giugno 2018 per un importo di 28,2 miliardi di rubli, mentre il volume totale dei dividendi pagati dall’inizio dell’anno ammonta a 43 miliardi di rubli.

Allo stesso tempo, il livello del debito netto della società è diminuito e al 30 settembre 2018 ammontava a 40,1 miliardi di rubli (alla stessa data del 2017 questa cifra era di 104,7 miliardi di rubli).

Allo stesso tempo, durante il periodo di riferimento, i contributi fiscali al bilancio del Bashkortostan, tenendo conto del pagamento una tantum dell'imposta sul reddito, sono aumentati di 1,5 volte rispetto allo stesso periodo dell'anno scorso e ammontano a 50,5 miliardi di rubli.

C'è un tag per includere un'immagine in una posizione specifica sulla pagina. . Questo tag ha un parametro obbligatorio: SRC="", e diversi parametri facoltativi. Il parametro SRC="" indica al browser dove cercare l'immagine e dovrebbe avere come valore l'URL della risorsa in cui si trova il file grafico. Nel caso più semplice, questo file verrà inserito nella directory principale o nella cartella IMG del tuo sito. Parametri facoltativi:

Il parametro ALT="" contiene come valore un'iscrizione che racconta il contenuto dell'immagine per quei visitatori i cui browser non supportano la grafica o funzionano in modalità grafica disabilitata. La stessa scritta appare quando passi il mouse sopra l'immagine.

I parametri WIDTH="" HEIGHT="" hanno come valori le dimensioni dell'immagine in larghezza e altezza in pixel. Si consiglia di specificare questi parametri nel codice della pagina in modo che il browser lasci in anticipo spazio per l'immagine, quindi, durante il caricamento, la pagina “si contrarrà” meno. Inoltre, questi parametri possono essere utilizzati per regolare la dimensione dell'immagine nella finestra del browser.

Il parametro BORDER="" disegna un bordo attorno all'immagine. Il valore è un numero che indica la larghezza del fotogramma in pixel.

Il parametro ALIGN= determina la posizione dell'immagine nella pagina, e può assumere i valori TOP - allinea il bordo superiore dell'immagine all'elemento più alto della riga corrente, TEXTTOP - allinea il bordo superiore dell'immagine all'elemento più alto della riga corrente, elemento di testo più alto della riga corrente, MIDDLE - allinea il centro dell'immagine alla linea di base della riga corrente, ABSMIDDLE - allinea il centro dell'immagine al centro della riga corrente. BASELINE o BOTTOM - allinea il bordo inferiore dell'immagine alla linea di base della riga corrente, ABSBOTTOM - allinea il bordo inferiore dell'immagine al bordo inferiore della riga corrente, HSPACE= - determina il rientro orizzontale, VSPACE= - determina il trattino verticale.

Sintassi dei tag:

Ticker

La linea corrente è specificata dal tag .

Gli attributi di questo tag sono bgcolor - colore di sfondo della linea corrente, altezza - altezza della linea, larghezza - larghezza della linea.

Direzione - imposta la direzione del movimento della linea strisciante - direzione="sinistra" (destra, su, giù) - movimento a sinistra (destra, su, giù).

Comportamento - comportamento della linea - behavior="scroll" (slide, alternate). Scorrimento: scorrimento normale (non è necessario specificarlo, è l'impostazione predefinita)



Diapositiva: scorrendo con un arresto, la linea corre fino al bordo e si ferma. Se si utilizza il parametro loop contemporaneamente a behavor="slide", la riga scorrerà il numero di volte impostato e si fermerà sul bordo. Alternato: la linea si sposterà da un bordo all'altro.
Scrollamount - velocità di movimento della linea, scrollamount="1". Può assumere valori da 1 a 10. 1 è il movimento più lento, 10 è il più veloce.

Sintassi dei tag: testo

I browser Web moderni possono riprodurre video e file audio vari formati. Per fare ciò, utilizzano lettori integrati (plug-in, controlli ActiveX) o programmi di riproduzione esterni. Puoi inserire audio o video in un documento HTML utilizzando vari tag:

- inserire un suono di sottofondo;

- inserire video in formato AVI;

- per inserire file audio e video;

- per inserire file audio e video.

Quando decidi di inserire audio e/o video in un documento HTML, tieni presente che i file corrispondenti sono piuttosto grandi. I file più popolari su Internet ora sono MP3, WMA, AIFF, AU, RealAudio (con estensioni ra e ram), MP4, file audio MIDI e formati video MPEG, MOV. Il formato audio WAV e il formato video AVI vengono utilizzati raramente su Internet.