Blog / Engenharia

Por que uma foto restaurada pode ser um arquivo maior que a digitalização

· relato de medição · dados: comparação de codificadores em produção

Uma observação de usuário deu início a esta nota: o download restaurado era maior que a foto enviada, o que intuitivamente parece errado para um “reparo”. A medição encontrou duas causas independentes: uma é o produto funcionando como planejado, a outra era desperdício genuíno que então removemos.

Causa 1: a saída realmente carrega ~6× os pixels

A restauração inclui o aprimoramento da imagem inteira: uma digitalização típica de 821×1024 (0.84 megapixels) volta em 2052×2560 (5.25 megapixels), 6.25× a contagem de pixels, com detalhe sintetizado de verdade nesses pixels, não cópias esticadas. Mais informação, mais bytes. Esta parte é o recurso.

8211024
Envio0.84 MP
20522560
Saída restaurada5.25 MP
Figura 1. Entrada e saída da mesma restauração, desenhadas em escala. A saída carrega 6.25× os pixels do envio.

Causa 2: os codificadores PNG dos navegadores são 20–40% inchados

A parte do desperdício: o app originalmente codificava os downloads no navegador com o codificador PNG embutido na API do canvas. Comparado a um codificador otimizador de verdade nos ajustes máximos sem perdas, o codificador do canvas produzia arquivos 20–40% maiores para uma saída de pixels idênticos. PNG é sem perdas de qualquer forma; os bytes extras não compravam nada.

Figura 2. Os mesmos pixels restaurados, codificados de duas formas. A codificação com compressão máxima e filtragem adaptativa cortou o arquivo em 45% com zero diferença de qualidade; PNG é sem perdas nos dois casos.

O servidor agora codifica o PNG do resultado uma vez, na compressão máxima sem perdas, e o cliente reutiliza esses bytes exatos para o download em vez de recodificar pelo canvas. A reutilização é correta por construção: o blob baixado é o mesmo a partir do qual o canvas foi pintado, então os pixels não podem diferir.

O que deliberadamente não fizemos

Não acrescentamos formatos de saída com perdas para perseguir um número menor. Uma restauração é uma cópia de arquivo, então o botão de download entrega PNG e nada mais; não sobrou nenhum ganho sem perdas gratuito para colher em JPEG ou WebP. E as fotos processadas no modo de reserva no dispositivo mantêm o codificador do navegador; essas execuções nunca tocam os nossos servidores.

Conclusão prática

Se o seu arquivo restaurado é maior que a sua digitalização, confira as dimensões em pixels antes de presumir desperdício: com 6× os pixels, um arquivo um pouco maior é o resultado esperado, e um menor significaria que detalhe foi jogado fora.