JPEG, PNG, WebP ou AVIF: qual você deve manter?
Tenho a mesma imagem em quatro formatos. Qual eu guardo e quais eu apago?
Comece pela imagem, não pelo formato
A discussão sobre formato quase sempre é a discussão errada para se ter primeiro. Quem decide o resultado é o conteúdo da imagem. Fotografias são feitas de gradientes suaves e ruidosos, sem sequências de pixels repetidos. Capturas de tela, logotipos, diagramas e pixel art são feitos de áreas chapadas, bordas duras e um número pequeno de cores exatas. Esses dois tipos de imagem comprimem por mecanismos completamente diferentes, e um formato excelente em um deles costuma ser medíocre no outro.
Ou seja, a primeira pergunta não é “o AVIF é melhor que o JPEG”. É “isto é uma fotografia ou um gráfico, e precisa de transparência”. Respondida essa, a lista de candidatos costuma ter um ou dois formatos.
O que cada formato realmente faz
| Formato | Compressão | Transparência | Animação | Melhor uso |
|---|---|---|---|---|
| JPEG | Só com perdas | Não | Não | Fotografias que precisam abrir em qualquer lugar |
| PNG | Só sem perdas | Sim, alfa de 8 bits | Não (APNG é um recurso à parte) | Capturas de tela, logotipos, gráficos chapados, pixels exatos |
| WebP | Com ou sem perdas | Sim, nos dois modos | Sim | Um substituto geral tanto para JPEG quanto para PNG |
| AVIF | Com ou sem perdas | Sim, inclusive com 10 bits | Sim | Fotografias em que o tempo de codificação é aceitável |
A tabela esconde uma coisa que vale dizer em voz alta: um PNG não fica menor quando se baixa um controle de qualidade, porque ele não tem controle de qualidade. Um otimizador de PNG reduz o arquivo encontrando um filtro de predição melhor e uma paleta melhor, não descartando detalhe. É por isso que uma fotografia salva em PNG continua enorme, seja qual for a ferramenta que você passe nela — não há nada no formato que permita jogar informação fora.
Com perdas e sem perdas não são notas de qualidade
É tentador ler “sem perdas” como “bom” e “com perdas” como “ruim”. Não são notas de qualidade, são trabalhos diferentes. Sem perdas quer dizer que os pixels decodificados são idênticos bit a bit aos que entraram; é a escolha certa quando os pixels são o ponto, como na captura de tela de uma interface em que alguém vai ler o texto. Com perdas quer dizer que o codificador pode descartar o detalhe que o olho tem dificuldade de notar, que é a única razão pela qual uma fotografia de doze megapixels cabe em algumas centenas de kilobytes.
Uma regra útil: se você notaria um único pixel errado, use um formato sem perdas. Se não notaria, um formato com perdas em uma qualidade razoável vai produzir um arquivo muito menor, e você não vai conseguir ver a diferença no tamanho normal de visualização.
Onde o WebP e o AVIF se justificam
Os dois formatos mais novos usam ferramentas de predição e de transformada que o JPEG, padronizado em 1992, não tem. Na prática, isso significa que eles alcançam uma qualidade visual parecida com um tamanho menor, e ambos lidam com transparência, coisa que o JPEG não faz de jeito nenhum. O WebP é o pragmático: codifica rápido e substitui JPEG e PNG com um único formato. O AVIF é o ambicioso: usa as ferramentas intraquadro do codec de vídeo AV1, aceita profundidades de bits maiores e em geral entrega o menor arquivo dos quatro para conteúdo fotográfico.
O custo é o tempo de codificação. Codificar AVIF é um problema de busca, e o codificador gasta tempo real de CPU nisso. Em uma aba do navegador, em um celular, esse tempo é o seu — é por isso que o FileSlimmer mostra o progresso arquivo a arquivo no AVIF, em vez de fingir que a espera não existe. Se você está convertendo uma única imagem de destaque, a troca claramente compensa. Se são quatrocentas, considere o WebP.
Converter um arquivo antigo não desfaz o estrago antigo
Esta é a decepção mais comum de todas. Se você pegar um JPEG salvo em qualidade baixa anos atrás e convertê-lo para PNG ou para WebP sem perdas, os artefatos de bloco e de ringing são copiados fielmente para o novo arquivo. Sem perdas quer dizer “idêntico à entrada”, e a entrada já tinha o estrago gravado nos pixels. Você fica com um arquivo maior contendo exatamente os mesmos defeitos.
Converter um arquivo com perdas para outro formato com perdas é uma segunda passagem de compressão, separada, então ela pode acrescentar os próprios artefatos por cima. Quando houver escolha, converta a partir do arquivo mais original que você ainda tiver — o original da câmera, a exportação da ferramenta de design — e não de uma cópia que já passou por um compressor.
Uma lista curta que dá para usar
- Fotografia que precisa abrir em qualquer coisa, inclusive em programas antigos: fique com JPEG.
- Fotografia para o seu próprio site ou aplicativo, com você controlando quem vai lê-la: WebP, ou AVIF se puder gastar o tempo de codificação.
- Captura de tela, logotipo, diagrama, gráfico ou qualquer coisa com texto nos pixels: PNG, ou WebP sem perdas se o tamanho importar mais que a compatibilidade universal.
- Qualquer coisa que precise de fundo transparente: PNG, WebP ou AVIF. JPEG não.
- Uma cópia de arquivamento que você talvez volte a editar: guarde o arquivo original, seja ele qual for, e trate toda versão comprimida como descartável.
O que esta comparação não diz
Não há aqui um ranking de tamanho, e isso é proposital. Comparações publicadas são medidas em um conjunto específico de imagens, com versões e ajustes específicos de codificador, e o resultado muda quando qualquer um desses fatores muda. A sua própria imagem é o único teste que descreve a sua própria imagem. Converta a mesma origem uma vez para cada candidato, em um ajuste de qualidade que você ache aceitável, e depois compare os dois números e as duas imagens lado a lado.
O suporte também muda com o tempo. Antes de migrar uma biblioteca inteira para um formato mais novo, veja o que vai precisar abrir os arquivos: um navegador, a galeria de um celular, uma impressora, o programa de desktop de dez anos de um cliente. O melhor formato é o menor que tudo o que está nessa lista consegue ler de fato.
Ferramentas para isso
Fontes
- ITU-T T.81 — the JPEG standard
- W3C — Portable Network Graphics (PNG) Specification (Third Edition)
- Google — WebP container and bitstream documentation
- Alliance for Open Media — AV1 Image File Format (AVIF)