Por qué una foto restaurada puede pesar más que el escaneo
Esta nota empezó con la observación de un usuario: la descarga restaurada pesaba más que la foto que había subido, lo que intuitivamente parece incorrecto para una “reparación”. La medición encontró dos causas independientes: una es el producto funcionando como debe; la otra era un desperdicio real que después eliminamos.
Causa 1: la salida realmente tiene ~6× los píxeles
La restauración incluye la mejora de la imagen entera: un escaneo típico de 821×1024 (0.84 megapíxeles) vuelve a 2052×2560 (5.25 megapíxeles), 6.25× la cantidad de píxeles, con detalle real sintetizado en esos píxeles, no copias estiradas. Más información, más bytes. Esta parte es la función.
Causa 2: los codificadores PNG del navegador están hinchados un 20–40%
La parte desperdiciada: la aplicación codificaba originalmente las descargas en el navegador con el codificador PNG integrado de la API de canvas. Comparado con un codificador optimizador de verdad a la máxima configuración sin pérdidas, el codificador del canvas producía archivos un 20–40% más grandes para una salida de píxeles idénticos. PNG es sin pérdidas en ambos casos; los bytes de más no compraban nada.
El servidor codifica ahora el PNG resultante una sola vez a máxima compresión sin pérdidas, y el cliente reutiliza esos mismos bytes para la descarga en lugar de volver a codificar a través del canvas. La reutilización es correcta por construcción: el blob descargado es el mismo con el que se pintó el canvas, así que los píxeles no pueden diferir.
Lo que deliberadamente no hicimos
No añadimos formatos de salida con pérdidas para perseguir un número más pequeño. Una restauración es una copia de archivo, así que el botón de descarga te entrega PNG y nada más; no queda ninguna ganancia sin pérdidas gratuita que recoger en JPEG o WebP. Y las fotos procesadas en el modo de respaldo en el dispositivo conservan el codificador del navegador; esas ejecuciones nunca tocan nuestros servidores.
Conclusión práctica
Si tu archivo restaurado pesa más que tu escaneo, comprueba sus dimensiones en píxeles antes de suponer un desperdicio: con 6× los píxeles, un archivo algo más grande es el resultado esperado, y uno más pequeño significaría que se ha descartado detalle.