A compressão sem perdas representa os mesmos dados usando outra organização que pode ocupar menos bytes. Ela aproveita padrões e frequências do conteúdo, acrescentando informações para reconstruí-lo. Se o arquivo já usa uma representação compacta ou é muito pequeno, o resultado pode diminuir pouco ou até aumentar.
Repetição permite uma descrição mais curta
Imagine um texto que repete uma frase muitas vezes. Em vez de armazenar cada ocorrência do mesmo jeito, um método de compressão pode representar padrões com referências e códigos. A reconstrução usa essa representação para recuperar o conteúdo original. Isso não significa apagar palavras e adivinhar o que faltava.
O formato gzip é definido no RFC1952. Ele inclui dados comprimidos e informações de enquadramento. O tamanho final depende tanto do conteúdo quanto do método e de seus parâmetros; “zipar” não é uma porcentagem fixa de redução.
Demonstração própria com texto fictício
Para esta explicação, foi gerada a frase ASCII “O arquivo repete esta frase para demonstrar compressao.
” cem vezes. O arquivo resultante foi comprimido com gzip, nível 9, e mtime igual a zero. O conteúdo foi descomprimido e comparado byte a byte com o original. Não foram usados documentos pessoais nem um arquivo enviado por leitor.
| Arquivo | Tamanho em bytes | Conferência |
|---|---|---|
| Texto fictício original | 5600 | 100 repetições da frase indicada. |
| Representação gzip | 100 | Nível 9, mtime0, ambiente registrado. |
| Texto reconstruído | 5600 | Igual ao original em todos os bytes. |
As repetições foram escolhidas para tornar o mecanismo visível. Esse resultado não representa documentos comuns, imagens, vídeos ou dados aleatórios. Outras versões e parâmetros podem produzir uma representação comprimida diferente sem mudar os bytes reconstruídos.
Como repetir sem dados sensíveis
import gzip original = (b"O arquivo repete esta frase para demonstrar compressao. " * 100) compactado = gzip.compress(original, compresslevel=9, mtime=0) restaurado = gzip.decompress(compactado) print(len(original), len(compactado), restaurado == original)
O exemplo usa a biblioteca padrão do Python e não exige rede nem publicação de arquivos. Confira o ambiente se comparar o tamanho exato. A igualdade verificada aqui se refere apenas à amostra produzida, não a qualquer arquivo que será recebido depois.
Por que alguns arquivos quase não diminuem?
Arquivos que já passaram por compressão podem ter poucos padrões adicionais úteis para outro método. Há também espaço ocupado pelo formato e suas informações de controle. Em amostras pequenas, esse custo pode superar a economia no conteúdo.
Não avalie apenas a extensão: ela é um nome associado ao formato, não uma medição de compressibilidade. Compare bytes antes e depois e verifique se o conteúdo reconstruído é igual quando a tarefa exige ausência de perdas.
Sem perdas e com perdas
Na compressão sem perdas, a reconstrução deve preservar os bytes originais. Métodos com perdas procuram reduzir a representação aceitando mudanças conforme seus objetivos. Um arquivo de texto que será executado ou um documento que precisa permanecer exato pede critérios diferentes de uma imagem destinada a uma visualização pequena.
Antes de substituir o original
Mantenha uma cópia enquanto confere o resultado, use ferramenta apropriada e compare integridade. Economizar espaço não demonstra que um arquivo é seguro para abrir. A compressão é uma transformação de representação, não uma verificação de origem.
Veja também como padrões influenciam uma senha e o exemplo de explicação física do pôr do sol. Em cada caso, a conclusão precisa respeitar as condições do exemplo.