Blog · Guias

Como funciona realmente a compressão de imagem sem perdas

Porque é que um ficheiro mais pequeno pode ser idêntico, píxel a píxel, ao original — e os truques de previsão, modelação e codificação de entropia que tornam isso possível.

in == out · fewer bytes

"Sem perdas" soa a contradição: como é que um ficheiro fica mais pequeno sem deitar nada fora? O truque é que uma imagem está cheia de <b>redundância</b>, e comprimir é a arte de descrever os mesmos píxeis com menos bits. Ao descodificar, recuperas cada valor original, exatamente — bit a bit.

O que "sem perdas" realmente significa

Os formatos com perdas, como o JPEG, descartam informação que o teu olho dificilmente vai notar. A compressão sem perdas não descarta <i>nada</i>: a imagem descodificada é idêntica à entrada. É por isso que é a escolha certa para capturas de ecrã, line art, logótipos, recursos de UI e masters de arquivo — tudo aquilo em que um único píxel deslocado seria um erro, não um arredondamento.

Passo 1: modelar melhor os dados

Os píxeis em bruto são um desperdício porque os vizinhos estão altamente correlacionados — o píxel à tua esquerda costuma ser uma ótima previsão para o atual. Os codecs sem perdas <b>preveem</b> cada píxel a partir dos vizinhos e guardam apenas o pequeno erro (o resíduo). O PNG chama a isto <i>filtros</i> (Sub, Up, Average, Paeth); quanto melhor a previsão, mais os resíduos se concentram perto de zero, e os zeros comprimem lindamente.

Passo 2: codificação de entropia

Depois de os dados serem, na maioria, resíduos pequenos e repetitivos, um <b>codificador de entropia</b> atribui códigos curtos aos valores comuns e códigos longos aos raros. O PNG usa DEFLATE (LZ77 + Huffman); codecs modernos como o WebP sem perdas e o JPEG XL usam modelação por contexto com codificação aritmética ou ANS, que se aproxima ainda mais do limite teórico. O formato muda, mas a ideia é a mesma: gastar menos bits naquilo que é previsível.

Ferramenta
O que faz
oxipng
Testa combinações de filtros PNG + recomprime com DEFLATE
zopfli
DEFLATE mais lento que encontra streams mais pequenos
WebP -lossless
Previsão + transformações de cor + aritmética
JPEG XL -d 0
Melhor rácio; também transcodifica JPEGs

Onde entram as ferramentas

É por isso que dois PNG sem perdas da mesma imagem podem diferir muito em tamanho: os píxeis são idênticos, mas o codificador esforçou-se mais para os descrever. O <b>oxipng</b> procura estratégias de filtro e recomprime; o <b>zopfli</b> é um DEFLATE muito mais lento que muitas vezes tira mais uns pontos percentuais; o WebP e o JPEG XL trazem modelos inteiramente mais inteligentes. Nenhum deles toca num píxel.

# Sem perdas, esforço máximo — píxeis idênticos, ficheiro mais pequeno
imageforge logo.png --lossless --effort max
imageforge ui-export.png --convert webp --lossless

Os limites, sem rodeios

O sem perdas tem um limite mínimo. Fotografias de cenas reais carregam detalhe genuíno de alta frequência (ruído de sensor, textura fina) que simplesmente não se prevê bem, por isso aí os ganhos sem perdas são modestos — é aí que os formatos com perdas ganham o seu lugar. Já para imagens planas, sintéticas ou com muito texto, o sem perdas corta rotineiramente 30–70% sem qualquer custo de qualidade. A destreza está em saber em que grupo cai a tua imagem.

Reduz os teus PNG sem tocar num píxel.

O ImageForge executa o oxipng, o zopfli e codificadores sem perdas modernos por ti — localmente.

Continua a ler