Blog · Guias

Um fluxo de trabalho PNG sensato: oxipng, zopfli e paletas

O PNG está longe de estar obsoleto — bem usado, é o melhor formato para gráficos planos. Aqui fica como obter os ficheiros mais pequenos sem banding ou artefactos de dithering.

palette → oxipng → zopfli

O PNG tem fama de ser "pesado", mas a maioria dos PNG inchados estão apenas mal codificados. Com um fluxo de trabalho claro em três passos — quantizar, otimizar, recomprimir — consegues reduzir rotineiramente um PNG para metade ou menos, sem perdas, mantendo margens nítidas e cor limpa. Aqui fica a ordem que importa.

Quando o PNG é a ferramenta certa

O PNG foi feito para <b>gráficos planos de margens nítidas</b>: logótipos, ícones, exportações de UI, diagramas, capturas de ecrã e tudo o que tenha transparência. É sem perdas, por isso as margens ficam perfeitamente limpas — sem ruído tipo "mosquito" do JPEG à volta do texto. Para fotografias é a escolha errada (usa WebP/AVIF/JPEG), mas para os gráficos sintéticos que preenchem as apps modernas, nada bate um PNG bem feito.

Passo 1: quantiza para uma paleta quando puderes

A maioria dos gráficos de UI usa muito menos do que 16 milhões de cores. Converter um PNG truecolor de 24 bits numa <b>paleta indexada de 8 bits</b> (≤256 cores) é a alavanca mais poderosa — muitas vezes reduz o ficheiro a metade antes de qualquer outra otimização. O truque está em escolher bem as cores e tratar os gradientes com cuidado; um bom quantizador escolhe uma paleta ótima e só aplica dithering onde realmente ajuda.

Passo 2: otimiza os filtros com o oxipng

O PNG aplica um <i>filtro</i> por linha antes da compressão, e essa escolha afeta muito o tamanho. O <b>oxipng</b> testa estratégias de filtro e recomprime a imagem, de forma rápida e em paralelo, sem qualquer perda de qualidade. É a predefinição segura para o dia a dia: aponta-o a uma pasta e ele torna cada PNG mais pequeno. Executa-o tanto em imagens truecolor como em imagens com paleta.

Passo 3: aperta o DEFLATE com o zopfli

Quando queres o mínimo absoluto e não te importas de esperar, o <b>zopfli</b> é um compressor compatível com DEFLATE que procura com muito mais afinco um stream mais pequeno. É lento — por vezes segundos por imagem — mas produz PNG padrão que qualquer descodificador lê, muitas vezes uns pontos percentuais mais pequenos do que só com oxipng. Perfeito para recursos que publicas uma vez e serves milhões de vezes.

# O pipeline completo, sem perdas do início ao fim
imageforge ui.png --palette auto --lossless        # passo 1
imageforge ./icons/*.png --optimize oxipng         # passo 2
imageforge logo.png --optimize zopfli --effort max # passo 3

Evitar banding e artefactos de dithering

Os dois modos de falha dos PNG com paleta são o <b>banding</b> (degraus visíveis num gradiente quando faltam cores) e o <b>ruído de dithering</b> (pontilhado resultante de espalhar cores para simular mais). A solução é o critério: mantém os gradientes em truecolor, quantiza as zonas planas e só aplica dithering em paletas pequenas onde o olho prefere ruído a faixas. Na dúvida, compara a versão quantizada com o original antes de a publicares.

Passo
Ferramenta
Perda
Quantizar
Paleta / estilo pngquant
Opcional, controlada
Otimizar filtros
oxipng
Nenhuma
Recomprimir
zopfli
Nenhuma

Reduz os teus PNG a metade, da forma certa.

Paleta, oxipng e zopfli num único passo — sem perdas por predefinição, no teu Mac.

Continua a ler