Dev & Code Jul 18, 2026Adicionar aos favoritos

Um entusiasta publicou uma exploração invertida do codec JPEG: gerar imagens que, ao serem decodificadas, produzem artefatos deliberados ao manipular a quantização DCT. Curioso, instrutivo e um excelente exercício para entender o formato.
Na página inicial do Hacker News esta semana, um artigo intitulado « Regressive JPEGs » (maurycyz.com/projects/bad_jpeg/) chamou nossa atenção. Seu autor documenta uma exploração invertida do codec JPEG: em vez de otimizar uma imagem para tamanho e qualidade, ele gera JPEGs deliberadamente degradados manipulando as tabelas de quantização e os blocos DCT (Discrete Cosine Transform).
Não é uma ferramenta de produção, mas uma ótima desculpa para entender como o JPEG funciona por baixo do capô — um formato que a maioria dos devs usa sem nunca ler a especificação.
JPEG (Joint Photographic Experts Group, padrão ISO/IEC 10918-1 de 1992) segue um pipeline clássico:
A qualidade percebida depende principalmente da etapa 5: quanto mais agressiva for a tabela de quantização, mais detalhes de altas frequências são perdidos.
O autor desvia esse mecanismo. Ao construir tabelas de quantização exóticas (valores muito altos em algumas frequências, valores anormalmente baixos em outras), ele produz JPEGs que, quando lidos por um decodificador padrão, exibem:
O interesse pedagógico é real: vemos a olho nu o que cada parâmetro do codec contribui para preservar.
Além do prazer da curiosidade, há alguns usos legítimos:
No fundo, o que esse tipo de projeto mostra é que um formato que achamos ser uma caixa-preta sempre esconde alavancas exploráveis — seja para o melhor ou apenas pela curiosidade pura.
A especificação original do JPEG (ITU T.81 / ISO 10918-1) é prolixa, mas legível — e é o melhor ponto de entrada para entender o que um decodificador realmente vê. Do lado das ferramentas, o libjpeg-turbo (Darrell Commander) permite inspecionar as tabelas de quantização de um arquivo via djpeg -verbose: uma ótima forma de verificar o que o codec armazenou em um JPEG concreto.
Para lembrar: os formatos de arquivo não são caixas-pretas. Ler um pouco da especificação (JPEG, PNG, WebP) transforma qualquer dev em um usuário melhor das ferramentas de imagem que usa todos os dias.
Artigo produzido por inteligência artificial, revisto sob controlo editorial humano.