Cerca 'compressione PNG', i primi strumenti affermano di essere 'senza perdite' e di non alterare la qualità, ma i tassi di compressione possono variare di diversi fattori: alcuni risparmiano il 70%, altri solo il 10%.
La differenza non risiede in algoritmi più magici, ma nel fatto che il 'senza perdite' a cui si riferiscono non è la stessa cosa.
Questo articolo spiega prima questa distinzione e poi consiglia strumenti in base alle esigenze d'uso.
Prima di tutto: due tipi di 'senza perdite'
Senza perdite vere: nessun pixel viene modificato
Il formato PNG è già senza perdite; la sua dimensione è determinata da due parti: come sono disposti i dati dei pixel e come vengono compressi con Deflate, e quanti metadati sono inclusi nel file.
La compressione senza perdite vera lavora solo su questi due punti:
- Cambia il modo di salvare per risparmiare spazio. Ad esempio, se il file utilizza effettivamente solo 200 colori, passa alla modalità tavolozza; se non ci sono sfumature trasparenti, rimuove il canale Alpha; le immagini in scala di grigi vengono salvate come tali.
- Prova filtri e parametri Deflate migliori. Per gli stessi pixel, il modo di codifica può influenzare molto la dimensione finale. I tool di design spesso non provano a fondo per velocità.
- Rimuove i metadati. Informazioni sul software di esportazione, timestamp, note testuali, miniature, ecc.
Quando decompresso, il file risultante è identico all'originale pixel per pixel. Il costo è un risparmio limitato: può solo rimuovere la parte di 'rumore' causata da una codifica non ottimale.
'Visivamente senza perdite': in realtà è una quantizzazione con perdite
Strumenti come TinyPNG e pngquant risparmiano molto perché fanno un'altra cosa: riducono il numero di colori del PNG a meno di 256 (quantizzazione) e usano il dithering per mascherarlo agli occhi.
Questa operazione è con perdita: i pixel sono stati modificati. Funziona benissimo per le icone web e le illustrazioni, ma se hai bisogno di 'pixel assolutamente identici' — ad esempio per tagli UI coerenti con il design, screenshot da confrontare pixel per pixel, o asset da modificare in seguito — non dovresti usarlo.
Il modo più semplice per verificare se uno strumento è senza perdite vere è confrontare l'originale e la versione compressa con ImageMagick
compare -metric AE original.png compressed.png null:
Se l'output è0, significa che nessun pixel è cambiato.
Strumenti PNG senza perdite raccomandati
Da riga di comando: oxipng (consigliato)
oxipng è un ottimizzatore PNG senza perdite scritto in Rust, può essere visto come il moderno successore del classico OptiPNG:
- Multithreading, veloce, adatto per l'elaborazione batch.
-o 0a-o 6(e-o max) per regolare il livello di compressione: più alto è, più lento è ma più risparmia.- Opzionale
--zopfliper una compressione extra, ma rallenta molto. - La compressione PNG senza perdite di Squoosh utilizza oxipng.
bash
brew install oxipng
oxipng -o 2 --strip safe -r ./images # Elabora ricorsivamente la directory, rimuovendo solo i metadati inoffensivi
Da riga di comando: zopflipng (per la massima risoluzione)
Prodotto da Google, utilizza l'algoritmo Zopfli per Deflate, solitamente riesce a comprimere ancora un po' di più rispetto al livello predefinito di oxipng, ma è molto più lento; le grandi immagini potrebbero impiegare molto tempo. Ideale per risorse statiche 'comprimi una volta, usa per sempre', come il logo del sito o le icone integrate nell'app.
Da riga di comando: OptiPNG, pngcrush (classici)
Entrambi sono ottimizzatori PNG senza perdite classici, ancora presenti in molti toolchain. Le loro funzionalità sono state quasi interamente coperte da oxipng, quindi non sono necessari per nuovi progetti.
Web: Squoosh
Strumento online di Google. Per PNG scegli l'encoder OxiPNG per la modalità senza perdite (attenzione a non spuntare 'Reduce palette', che è una riduzione con perdita).
Vantaggi: senza installazione, confronto visivo a destra e sinistra; svantaggi: gestisce solo un file alla volta, devi rinominare e sostituire tu i file scaricati. Ideale per comprimere occasionalmente uno o due file.
Interfaccia grafica Mac: ImageOptim
Strumento gratuito e open source per Mac, interno integra diversi ottimizzatori come oxipng, Zopfli, pngcrush, provando a turno per ottenere il risultato minimo. La modalità predefinita è senza perdite (la modalità con perdita deve essere attivata manualmente).
Comprime molto bene, ma quando tutti gli ottimizzatori sono attivi è piuttosto lento; inoltre sovrascrive direttamente il file originale, quindi fai una copia di backup prima di usarlo.
Interfaccia grafica Mac: ImgZilla
ImgZilla è uno strumento di compressione immagini per macOS che abbiamo sviluppato. La sua gestione del PNG è diretta:
- Usa oxipng per la compressione senza perdite, livello 2 (uguale alla modalità predefinita di Squoosh), bilanciando velocità e dimensione. Nessun pixel viene modificato, puoi verificare con il comando
compareriportato sopra. - Non applica quantizzazione, non riduce i colori, non cambia formato, non ridimensiona. Il PNG compresso rimane PNG.
- Compressione in loco: il nome e il percorso del file non cambiano, quindi i riferimenti nel codice o nei documenti non vanno toccati.
- Trascina una cartella intera: scansiona ricorsivamente le sottocartelle, salta automaticamente i file nascosti e
node_modules; può gestire anche JPG, GIF, WebP, HEIC, AVIF, SVG. - L'originale viene spostato nel Cestino di default; se non ti piace, fai clic destro per 'Ripristina'.
- Non forza la compressione: i file con tasso di risparmio inferiore al 0,4% sono marcati come 'già minimi' e rimangono invariati, senza consumare crediti.
- Esegue tutto localmente, i tuoi asset non vengono caricati su alcun server.
Ci sono due punti da chiarire:
- Non cerca la dimensione massima per PNG. Il livello 2 è molto più veloce del
-o maxo Zopfli, a scapito di pochi punti percentuali in meno. Se la tua esigenza è 'comprimere un logo fino all'ultimo byte', zopflipng o ImageOptim sono più adatti. - Rimuove tutti i metadati PNG, incluso il profilo di colore. Le immagini sRGB normali non sono interessate; ma se l'immagine include un profilo di colore ampio come Display P3 (comune nelle schermate Mac o nelle esportazioni dai software di design), rimuovendolo potrebbero verificarsi leggere variazioni di colore in software che gestiscono la gestione colori. Per immagini con colori molto precisi, puoi abilitare 'Mantieni informazioni EXIF' nelle impostazioni per mantenere i metadati originali.
Tabella riassuntiva
| Strumento | Tipo | Senza perdite vere | Batch | Ideale per |
|---|---|---|---|---|
| oxipng | riga di comando | ✅ | ✅ | Sviluppatori, flussi di build |
| zopflipng | riga di comando | ✅ | Devi scrivere uno script | Massima risoluzione, non importa la velocità |
| OptiPNG / pngcrush | riga di comando | ✅ | ✅ | Progetti legacy |
| Squoosh | web | ✅ (OxiPNG, non spuntare riduzione tavolozza) | ❌ Un file alla volta | Compressione occasionale di uno o due file |
| ImageOptim | App Mac | ✅ (predefinito) | ✅ | Utenti Mac che vogliono la massima forza di compressione |
| ImgZilla | App Mac | ✅ | ✅ trascinando cartella | Compressione batch, senza cambiare percorsi, con possibilità di annullamento |
| TinyPNG / pngquant | web / riga di comando | ❌ quantizzazione con perdite | Dipende dalla versione | Accetta riduzione colore, vuole massima compressione |
Come scegliere
- Solo pixel identici e sei disposto a usare il terminale: oxipng, inseriscilo negli script di build, una volta per tutte.
- Vuoi comprimere un singolo file al massimo: zopflipng.
- Mac, elaborazione batch tramite interfaccia grafica: ImageOptim offre più compressione; ImgZilla è più veloce, permette di recuperare il file originale dal Cestino e gestisce anche altri formati.
- Accetta perdite leggere e vuoi ancora più dimensioni: TinyPNG / pngquant, ma tieni presente che non è più senza perdite.
Un ultimo avviso: quanto risparmia la compressione senza perdite dipende da come è stato esportato il PNG originale. Le immagini generate direttamente dai tool di design o mai ottimizzate contengono spesso molto 'rumore'; se un PNG è già stato ottimizzato, non puoi spremere molto di più — se lo strumento mostra 'già minimi', significa che è già ottimo, non che lo strumento non funziona.
ImgZilla attualmente supporta solo macOS (versione 12.3 o superiore) ed è disponibile su Mac App Store. La versione gratuita permette di comprimere 10 file al giorno, conteggiando solo i successi: trascina una cartella piena di PNG e poi verifica con
compareche i pixel siano davvero invariati.
}
