Vai al contenuto

Come funziona oCompress

Cosa succede quando trascini un file, come verificare che non venga caricato nulla e cosa significano davvero compressione senza perdita e con perdita.

La versione breve

Quando apri la pagina di uno strumento, il browser scarica la pagina e un piccolo programma, il compressore. Quando aggiungi un file, il browser lo legge, il compressore lo elabora sul tuo processore e il risultato ti viene restituito come download. In nessun momento il file viene inviato in rete. L'intero processo funziona così:

  1. Caricamento. Prima si caricano la pagina e l'interfaccia dello strumento. Il motore per un tipo di file (immagini, video e audio, oppure documenti) viene scaricato solo quando aggiungi un file corrispondente, così non scarichi mai codice che non usi.
  2. Lettura. Il browser dà alla pagina accesso esattamente ai file che hai scelto, e a nient'altro sul tuo dispositivo.
  3. Compressione. Il lavoro avviene in un Web Worker, un thread del browser in background, così la pagina resta reattiva e puoi annullare in qualsiasi momento.
  4. Salvataggio. Il file compresso viene creato in memoria (i video grandi nello spazio di archiviazione privato del browser) e salvato tramite il normale download del browser, uno alla volta o in un file ZIP.

Cosa viene eseguito nel browser

I browser moderni possono eseguire codice compilato a una velocità vicina a quella nativa grazie a WebAssembly, e danno alle pagine web accesso agli encoder video hardware del dispositivo tramite un'interfaccia chiamata WebCodecs. oCompress li usa entrambi:

  • Immagini: MozJPEG per il JPEG, OxiPNG e un quantizzatore di tavolozza per il PNG, l'encoder WebP della libreria libwebp di Google, libavif per l'AVIF, SVGO per l'SVG, e decoder ed encoder dedicati per GIF e TIFF. I codec JPEG, PNG, WebP e AVIF sono compilati in WebAssembly.
  • Video e audio: WebCodecs con la libreria Mediabunny per leggere e scrivere contenitori come MP4 e WebM. La codifica usa l'encoder hardware del chip grafico quando è disponibile, ed è per questo che può essere veloce anche in un browser. I file MP3 vengono scritti dall'encoder LAME e i file FLAC da libFLAC, entrambi compilati in WebAssembly e caricati solo quando servono.
  • Documenti: il nostro codice, basato su librerie open source per PDF e ZIP, apre i PDF e i file Office, ricomprime le immagini al loro interno con i codec per le immagini e scrive un nuovo file.

Ogni libreria che distribuiamo è open source: la maggior parte con licenze permissive come MIT, BSD e Apache 2.0, Mediabunny con la MPL 2.0, e l'encoder MP3 LAME con la LGPL, come file separato e sostituibile. Consulta l'elenco delle librerie con versioni e licenze.

Come verificare che non venga caricato nulla

Non devi fidarti sulla parola. Bastano due semplici prove:

  • Vai offline. Apri la pagina di uno strumento, comprimi un file in modo che il motore venga caricato, poi disattiva il Wi-Fi o i dati mobili e comprimi un altro file dello stesso tipo. Funziona, perché nulla ha bisogno della rete.
  • Osserva il traffico di rete. In Chrome, Edge o Firefox premi F12, apri la scheda Rete e comprimi un file. Vedrai il codice del compressore caricato dal nostro sito e le richieste di statistiche e pubblicità, ma nessuna richiesta che trasporta il tuo file. Una foto da 10 MB comparirebbe come un caricamento da 10 MB; non ce n'è nessuno.

La pagina invia a Google Analytics eventi di utilizzo anonimi, come "è stato compresso un JPG di qualche megabyte". Questi eventi contengono lo strumento, il tipo di file e, come intervalli approssimativi, dimensione, risparmio e tempo di elaborazione, mai il nome del file né il suo contenuto.

Compressione senza perdita: stesso contenuto, meno byte

La compressione senza perdita individua la ridondanza, cioè ciò che è memorizzato più volte o che si può prevedere, e la scrive in forma più compatta. La decodifica inverte il processo con esattezza. Tre idee compaiono in quasi tutti i formati senza perdita:

  • Previsione. I pixel vicini in un'immagine o i campioni consecutivi nell'audio di solito si somigliano. Memorizzare la piccola differenza rispetto a una previsione invece del valore completo lascia numeri per lo più vicini allo zero. I filtri del PNG e il predittore lineare del FLAC funzionano così.
  • Ripetizione. Le sequenze ripetute vengono sostituite da un breve riferimento alla copia precedente. È la parte LZ77 di DEFLATE, usata in ZIP, PNG e file Office.
  • Codifica entropica. I valori frequenti ricevono codici brevi e quelli rari codici lunghi (codifica di Huffman o aritmetica).

La compressione senza perdita ha un limite naturale: il rumore casuale non si può prevedere, quindi una foto con molta grana o una registrazione rumorosa non si riducono mai molto senza perdita. È anche il motivo per cui comprimere un file già compresso, come un JPEG dentro uno ZIP, non fa risparmiare quasi nulla.

Compressione con perdita: togliere ciò che non ti mancherà

I codec con perdita vanno oltre e scartano informazioni che occhi e orecchie umani percepiscono appena. JPEG e WebP memorizzano il colore a una risoluzione più bassa della luminosità ed eliminano per arrotondamento i dettagli fini ad alta frequenza. MP3, AAC e Opus eliminano i suoni coperti da quelli più forti. I codec video come H.264 memorizzano ogni tanto un'immagine completa e, nel mezzo, soprattutto movimenti e cambiamenti.

L'impostazione della qualità o del bitrate decide quanto viene scartato. Con impostazioni moderate la perdita è molto difficile da notare; se esageri compaiono gli artefatti tipici: blocchi e aloni nelle immagini, un suono metallico o "da sott'acqua" nell'audio, sbavature nelle scene video rapide.

Cosa promettono gli strumenti e cosa no

  • Non ricevi mai un file più grande. Se il risultato non è più piccolo, lo strumento restituisce l'originale e ti dice che è già ottimizzato.
  • Documenti e file audio producono byte identici a parità di file e impostazioni; gli encoder video hardware possono differire di qualche byte da un'esecuzione all'altra.
  • Il testo dei documenti resta testo; le pagine non vengono mai trasformate in immagini.
  • I metadati delle immagini come la posizione GPS vengono rimossi per impostazione predefinita, mentre il profilo colore e la rotazione vengono conservati. Anche i metadati dei video come posizione, dispositivo e date vengono rimossi per impostazione predefinita; l'audio conserva tag e copertina a meno che tu non disattivi l'opzione.

Quello che non possiamo promettere è una percentuale precisa. Il risparmio dipende interamente da come è stato creato il file: una foto del telefono o un PDF scansionato di solito hanno molto margine, un file già ottimizzato ne ha poco. Lo strumento mostra le dimensioni esatte prima e dopo per ogni file.

I limiti della compressione nel browser

Una scheda del browser è un ambiente isolato con memoria limitata, e questo fissa i confini di ciò che è fattibile. Lo strumento accetta immagini fino a 200 MB e 100 megapixel, file PDF e Office fino a 300 MB, e video e audio fino a 4 GB su un computer (1 GB sui telefoni), anche se i video 4K lunghi potrebbero comunque non entrare nella memoria di una scheda. La velocità dipende dal tuo hardware: nei nostri test su un PC Windows veloce con Chrome, un minuto di video 1080p ha richiesto circa 20 secondi e una foto da 24 megapixel circa 2,5 secondi; i telefoni possono essere molto più lenti. Il video e la maggior parte delle conversioni audio richiedono WebCodecs, disponibile nelle versioni attuali di Chrome, Edge e Opera, in Firefox 130+ e in Safari 26+; WAV e AIFF possono diventare MP3, FLAC o WAV anche senza.

Alcuni formati non hanno alcun decoder nei browser, come WMA, AVI e WMV, e i vecchi file Office binari non si possono riscrivere in modo sicuro. Per questi, lo strumento spiega le opzioni invece di produrre un file che potrebbe essere danneggiato. Quando un lavoro è troppo grande per un browser, un programma desktop come HandBrake per i video o LibreOffice per i documenti è il consiglio onesto.