Otimizar o tamanho das imagens PNG

Novembro 2016


É possível otimizar, significativamente, o tamanho dos arquivos PNG, o que é particularmente interessante para as páginas web. O método descrito abaixo permite reduzir os arquivos de 40%, em média.


Como?

  • Reduzindo o número de cores na imagem.
  • Recompactando a imagem.
  • Removendo as informações desnecessárias do arquivo PNG (comentários, miniaturas...)

Por quê?

  • Quanto menos cores em uma imagem melhor ela será comprimida em PNG. Muitas vezes, as cores dos PNG com milhões de cores podem ser reduzidas para 256, sem muita perda de qualidade.
  • Você pode usar diversas taxas de compressão ao salvar em PNG. Assim, você poderá re-comprimir os PNG com configurações ideais para obter um arquivo menor, sem qualquer alteração visual.
  • Um arquivo PNG pode conter inúmeras informações além da própria imagem: comentários, perfis de cor, etc. Estas informações são desnecessárias para um navegador. Eliminá-las permite obter arquivos PNG menores.

Com que?


Existem dois softwares bastante eficazes, gratuitos e open-source:
  • "pngnq" reduz o número de cores de um arquivo PNG. A grande maioria dos PNG com milhões de cores pode ser reduzida para 256 cores sem perda flagrande de qualidade. Isso economiza espaço. "pngnq" é o melhor software neste campo.
  • "optipng" realiza uma recompressão dos arquivos PNG tentando diversas configurações de compactação para obter o menor arquivo possível.
  • "optipng" também elimina as informações desnecessárias de um arquivo PNG.

A etapa "pngnq" é recomendada, mas é opcional, pois em alguns casos específicos, ela também pode reduzir a qualidade da imagem. Mas na maioria dos casos, o algoritmo é tão eficaz que a diferença, entre milhões de cores e 256 cores, é quase imperceptível.

Na verdade, "pngnq" é tão eficaz, que raros são os casos em que o fato de manter as 16 milhões de cores é justificável.

Linha de comando


Se você tem um arquivo imagem.png, digite em linha de comando:

pngnq -vf -s1 imagem.png
optipng -o7 imagem-nq8.png

Na saída, você terá a imagem otimizada imagem-nq8.png

Tente! Você ficará surpreso com a economia de espaço.

Explicações das opções:
  • - vf pede ao "pngnq" para exibir o que ele está fazendo, e comprimir o arquivo, caso ele já exista.
  • -s1 pede ao "pngnq" para otimizar ao máximo (o padrão é-s3)
  • -o7 pede ao optipng para fazer o máximo de testes com diversas combinações.

Processamento de arquivos por lote


Se você tem um lote de arquivos PNG, você pode fazer:

pngnq -vf -s1 *.png
optipng -o7 *-nq8.png

Os arquivos otimizados serão chamados de "xxxx-nq8.png"

Ganho médio


Na maioria dos casos, podemos esperar conseguir a redução de arquivo PNG em 40%, em relação ao seu tamanho original.
(Um PNG de 100 kb pode ser reduzido para 40kb).

Exemplos

Logotipo "CommentCaMarche"


Imagem original: 9,2 kb



Otimizada: 4,4 kb


Moedas


Imagem original: 21,8 kb



Otimizada: 8,4 kb


Onde Encontrar estes softwares?

  • No Linux (Debian):
    sudo apt-get install pngnq optipng 
  • No Windows:

E a transparência? E a compatibilidade?


O "pngnq" e o "optipng" conservam a transparência dos arquivos PNG. Você pode, então, comprimir todos os seus arquivos PNG, sem problema.

Além disso, estes dois programas se preocupam em gerar formatos PNG perfeitamente válidos: os arquivos PNG assim produzidos são perfeitamente padronizados e poderão ser lidos em todos os softwares suportando o formato PNG.

Nota do autor


Atualmente, "pngnq"+"optipng" parecem estar dando os melhores resultados possíveis.

Eu não encontrei nenhum outro software que forneça arquivos tão compactos. Se você encontrar softwares mais eficazes, por favor, me avisem!
Nota: Em alguns casos o "pngout" (freeware para Windows) pode produzir melhores resultados que o "optipng". As probabilidades são as mesmas: às vezes, um é melhor, outras vezes, o outro é melhor. Depende da imagen. Se você tiver tempo, você pode tentar com os dois para obter o menor PNG possível.

A versão de linha de comando do "pngout" é gratuita. A versão com interface gráfica (PNGOUTWin) é paga.

Scripts


Os seguintes scripts otimizam, automaticamente, todos os arquivos PNG no diretório atual (sem que você precise mudar os "xxx-nq8.png" para "xxx.png", no final).

Não é recomendado passar várias vezes esse script no mesmo arquivo PNG, porque o "pngnq" vai degradar a qualidade da imagem a cada vez.

.bat (Windows)


pngnq -vf -s1 *.png   
@FOR %%G IN (*.png) DO ( @IF EXIST "%%~nG-nq8.png" (move /Y "%%~nG-nq8.png" "%%G") )   
optipng -o7 *.png

bash (Linux)


#!/bin/bash   
pngnq -vf -s1 *.png   
rename -f 's/-nq8.png$/.png/' *.png   
optipng -o7 *.png



Tradução feita por Lucia Maurity y Nouira

Veja também :
Este documento, intitulado « Otimizar o tamanho das imagens PNG »a partir de CCM (br.ccm.net) está disponibilizado sob a licença Creative Commons. Você pode copiar, modificar cópias desta página, nas condições estipuladas pela licença, como esta nota aparece claramente.