Warum ein restauriertes Foto größer sein kann als der Scan
Eine Beobachtung eines Nutzers stand am Anfang: Der restaurierte Download war größer als das hochgeladene Foto, was sich für eine „Reparatur“ intuitiv falsch anfühlt. Die Messung fand zwei unabhängige Ursachen: Die eine ist das Produkt, das wie vorgesehen arbeitet, die andere war echte Verschwendung, die wir dann beseitigt haben.
Ursache 1: Die Ausgabe trägt wirklich ~6× so viele Pixel
Die Restaurierung umfasst eine Verbesserung des ganzen Bildes: Ein typischer 821×1024-Scan (0,84 Megapixel) kommt mit 2052×2560 (5,25 Megapixel) zurück, das 6,25-Fache der Pixelzahl, mit echten synthetisierten Details in diesen Pixeln, keine gestreckten Kopien. Mehr Information, mehr Bytes. Dieser Teil ist das Feature.
Ursache 2: Browser-PNG-Encoder sind 20–40 % aufgebläht
Der verschwenderische Teil: Die App kodierte Downloads ursprünglich im Browser mit dem eingebauten PNG-Encoder der Canvas-API. Verglichen mit einem richtigen optimierenden Encoder auf maximalen verlustfreien Einstellungen erzeugte der Canvas-Encoder 20–40 % größere Dateien für pixelidentische Ausgaben. PNG ist so oder so verlustfrei; die zusätzlichen Bytes brachten nichts.
Der Server kodiert das Ergebnis-PNG jetzt einmal mit maximaler verlustfreier Kompression, und der Client verwendet genau diese Bytes für den Download wieder, statt sie durch das Canvas neu zu kodieren. Die Wiederverwendung ist per Konstruktion korrekt: Der heruntergeladene Blob ist derselbe, aus dem das Canvas gezeichnet wurde, die Pixel können sich also nicht unterscheiden.
Was wir bewusst nicht getan haben
Wir haben keine verlustbehafteten Ausgabeformate hinzugefügt, um einer kleineren Zahl nachzujagen. Eine Restaurierung ist eine Archivkopie, deshalb gibt dir der Download-Button PNG und sonst nichts; in JPEG oder WebP gibt es keinen kostenlosen verlustfreien Gewinn mehr abzuholen. Und Fotos, die im On-Device-Fallback-Modus verarbeitet werden, behalten den Browser-Encoder; diese Läufe berühren unsere Server überhaupt nicht.
Praktische Erkenntnis
Wenn deine restaurierte Datei größer ist als dein Scan, prüfe ihre Pixelmaße, bevor du Verschwendung annimmst: Bei 6× so vielen Pixeln ist eine etwas größere Datei das erwartete Ergebnis, und eine kleinere würde bedeuten, dass Details weggeworfen wurden.