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.
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.
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.
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.
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.
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.
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
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.
Paleta, oxipng e zopfli num único passo — sem perdas por predefinição, no teu Mac.