Come funziona davvero la compressione lossless delle immagini
Perché un file più piccolo può essere identico pixel per pixel all'originale — e i trucchi di predizione, modellazione e codifica entropica che lo rendono possibile.
Perché un file più piccolo può essere identico pixel per pixel all'originale — e i trucchi di predizione, modellazione e codifica entropica che lo rendono possibile.
"Lossless" suona come una contraddizione: come può un file diventare più piccolo senza buttare via nulla? Il trucco è che un'immagine è piena di <b>ridondanza</b>, e comprimere è l'arte di descrivere gli stessi pixel con meno bit. Decodificala e riottieni ogni valore originale, esattamente — bit per bit.
I formati lossy come JPEG scartano informazioni che il tuo occhio difficilmente noterà. La compressione lossless non scarta <i>nulla</i>: l'immagine decodificata è identica all'ingresso. Ecco perché è la scelta giusta per screenshot, line art, loghi, asset UI e master d'archivio — tutto ciò in cui un solo pixel spostato sarebbe un bug, non un arrotondamento.
I pixel grezzi sono uno spreco perché i vicini sono altamente correlati — il pixel alla tua sinistra è di solito un'ottima stima per quello attuale. I codec lossless <b>predicono</b> ogni pixel dai suoi vicini e memorizzano solo il piccolo errore (il residuo). PNG chiama questi <i>filtri</i> (Sub, Up, Average, Paeth); migliore è la predizione, più i residui si concentrano vicino allo zero, e gli zeri si comprimono magnificamente.
Una volta che i dati sono per lo più residui piccoli e ripetitivi, un <b>codificatore entropico</b> assegna codici brevi ai valori comuni e codici lunghi a quelli rari. PNG usa DEFLATE (LZ77 + Huffman); codec moderni come WebP lossless e JPEG XL usano la modellazione contestuale con codifica aritmetica o ANS, che si avvicina di più al limite teorico. Il formato cambia, ma l'idea è la stessa: spendere meno bit su ciò che è prevedibile.
Ecco perché due PNG lossless della stessa immagine possono differire enormemente in dimensione: i pixel sono identici, ma il codificatore ha lavorato di più per descriverli. <b>oxipng</b> cerca strategie di filtro e ricomprime; <b>zopfli</b> è un DEFLATE molto più lento che spesso toglie qualche punto percentuale in più; WebP e JPEG XL portano modelli del tutto più intelligenti. Nessuno di loro tocca un pixel.
# Lossless, massimo impegno — pixel identici, file più piccolo imageforge logo.png --lossless --effort max imageforge ui-export.png --convert webp --lossless
Il lossless ha un pavimento. Le fotografie di scene reali portano vero dettaglio ad alta frequenza (rumore del sensore, texture fine) che semplicemente non si predice bene, quindi lì i guadagni lossless sono modesti — è lì che i formati lossy si guadagnano il loro posto. Per le immagini piatte, sintetiche o ricche di testo, invece, il lossless taglia di norma il 30–70% a costo zero di qualità. L'abilità sta nel sapere in quale categoria rientra la tua immagine.
ImageForge esegue oxipng, zopfli e codificatori lossless moderni per te — in locale.