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ì:
- 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.
- Lettura. Il browser dà alla pagina accesso esattamente ai file che hai scelto, e a nient'altro sul tuo dispositivo.
- 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.
- 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.