Un flusso PNG sensato: oxipng, zopfli e palette
PNG è tutt'altro che obsoleto — usato bene, è il miglior formato per la grafica piatta. Ecco come ottenere i file più piccoli senza banding o artefatti di dithering.
PNG è tutt'altro che obsoleto — usato bene, è il miglior formato per la grafica piatta. Ecco come ottenere i file più piccoli senza banding o artefatti di dithering.
PNG ha la fama di essere "pesante", ma la maggior parte dei PNG gonfi sono semplicemente codificati male. Con un flusso di lavoro chiaro in tre passaggi — quantizzare, ottimizzare, ricomprimere — puoi ridurre di routine un PNG della metà o più, senza perdita, mantenendo bordi nitidi e colore pulito. Ecco l'ordine che conta.
PNG è pensato per <b>grafica piatta dai bordi netti</b>: loghi, icone, esportazioni UI, diagrammi, screenshot e qualsiasi cosa con trasparenza. È lossless, quindi i bordi restano perfettamente puliti — niente rumore "a zanzara" di JPEG intorno al testo. Per le fotografie è la scelta sbagliata (usa WebP/AVIF/JPEG), ma per la grafica sintetica che riempie le app moderne, niente batte un PNG fatto bene.
La maggior parte della grafica UI usa molti meno di 16 milioni di colori. Convertire un PNG truecolor a 24 bit in una <b>palette indicizzata a 8 bit</b> (≤256 colori) è la leva singola più potente — spesso dimezza il file prima di qualsiasi altra ottimizzazione. Il trucco sta nello scegliere bene i colori e trattare i gradienti con attenzione; un buon quantizzatore sceglie una palette ottimale e applica il dithering solo dove serve davvero.
PNG applica un <i>filtro</i> per riga prima della compressione, e la scelta influisce enormemente sulla dimensione. <b>oxipng</b> prova strategie di filtro e ricomprime l'immagine, velocemente e in parallelo, senza alcuna perdita di qualità. È l'impostazione predefinita sicura di ogni giorno: puntalo su una cartella e rende più piccolo ogni PNG. Eseguilo sia su immagini truecolor sia su immagini con palette.
Quando vuoi il minimo assoluto e non ti dispiace aspettare, <b>zopfli</b> è un compressore compatibile con DEFLATE che cerca molto più a fondo uno stream più piccolo. È lento — a volte secondi per immagine — ma produce PNG standard che qualsiasi decoder legge, spesso qualche punto percentuale più piccoli del solo oxipng. Perfetto per asset che pubblichi una volta e servi milioni di volte.
# La pipeline completa, lossless dall'inizio alla fine imageforge ui.png --palette auto --lossless # passo 1 imageforge ./icons/*.png --optimize oxipng # passo 2 imageforge logo.png --optimize zopfli --effort max # passo 3
I due modi di fallimento dei PNG con palette sono il <b>banding</b> (gradini visibili in un gradiente quando i colori non bastano) e il <b>rumore di dithering</b> (moiré da colori sparsi per simularne di più). La soluzione è il giudizio: mantieni i gradienti in truecolor, quantizza le zone piatte e applica il dithering solo con palette piccole dove l'occhio preferisce il rumore alle bande. Nel dubbio, confronta la versione quantizzata con l'originale prima di pubblicarla.
Palette, oxipng e zopfli in un solo passaggio — lossless per impostazione predefinita, sul tuo Mac.