Wie Bildumwandlung im Browser wirklich funktioniert (und warum ich es so gebaut habe)
Dov Azencot
@DovAzencotDer Grund, warum diese ganze Seite existiert, ist ein kleiner, dummer Moment des Unbehagens, den ich vor Jahren hatte. Ich musste ein einzelnes HEIC-Foto in JPG umwandeln, ich tippte das Naheliegende in eine Suchleiste, und ich landete bei einem Konverter, der mein Bild auf seinen Server hochladen wollte. Also tat ich es. Es funktionierte. Und dann saß ich da und dachte: Dieses Foto liegt jetzt auf irgendeiner Maschine, von der ich nichts weiß, betrieben von Leuten, die ich nie treffen werde, aufbewahrt für eine Dauer, die mir nie genannt wurde. Für einen zufälligen Screenshot, geschenkt. Aber es war kein Screenshot. Es war ein persönliches Foto, und ich hatte es gerade Fremden gegeben, um mir dreißig Sekunden zu sparen.
Das ist das Problem, das ich nicht mehr haben wollte. Die Antwort stellte sich als das heraus: Der Upload war von vornherein nie nötig.
Der alte Weg: den Rechner eines Fremden mieten
Ein herkömmlicher Online-Konverter funktioniert wie ein Versandhandel. Du schickst deine Datei hoch zu einem Server. Der Server führt die Umwandlung mit Software aus, die auf seiner Maschine installiert ist. Er schickt das Ergebnis wieder herunter. Dein Bild machte eine Rundreise durch Hardware, die du nicht kontrollierst, und irgendwo dazwischen lag es, vollständig, auf einer Platte, die dir nicht gehört.
Jedes Datenschutzversprechen, das an dieses Modell geschraubt wird, ist ein Versprechen über Verhalten — die Datei wird nach einer Stunde gelöscht, niemand schaut hinein. Vielleicht hält das. Vielleicht schon. Du hast keine Möglichkeit, es zu prüfen, und du vertraust ihm die tatsächlichen Bytes deiner Datei an. Das Vertrauen ist die ganze Architektur, und Vertrauen war genau das, was ich nicht ausgeben wollte.
Der neue Weg: dein Browser hat den Rechner schon
Hier ist, was sich geändert hat. Moderne Browser können echte, kompilierte Programme mit nahezu nativer Geschwindigkeit ausführen, über etwas namens WebAssembly — kurz WASM. Die Bildcodecs, die früher auf einem Server lebten — der Code, der ein PNG liest, der ein WebP kodiert, der HEIC dekodiert —, lassen sich zu WASM kompilieren und innerhalb des Browser-Tabs ausführen, den du schon offen hast.
Wenn du also eine Datei auf eine so gebaute Seite ziehst, lädt sich die Umwandlungssoftware einmal auf deine Maschine, wie jeder andere Teil der Webseite. Von da an passiert die eigentliche Arbeit — dein Bild lesen, es umkodieren, die neue Datei schreiben — auf deinem eigenen Prozessor, in deinem eigenen Speicher. Das Ergebnis wird dir direkt als Download zurückgegeben. Deine Datei wird nie irgendwohin geschickt, weil es nichts gibt, wohin man sie schicken könnte. Es ist überhaupt kein Server im Spiel.
Deshalb kann ich sagen, deine Dateien verlassen dein Gerät nie, und es als Tatsache meinen statt als Richtlinie. Es ist nicht so, dass ich verspreche, nicht hinzuschauen. Es ist so, dass es keinen Weg gibt, auf dem dein Bild mich erreicht. Ich könnte dein Foto nicht abrufen, selbst wenn ein Gericht es mir anordnete, denn es war nie auf meiner Seite der Leitung. Der Datenschutz ist keine Funktion, die ich obendrauf gesetzt habe. Er ist eine Folge davon, wo der Code läuft.
Wie du erkennst, dass es stimmt
Du musst mir nicht glauben, und das ist der Teil, den ich am meisten mag. Öffne die Entwicklertools deines Browsers, beobachte den Netzwerk-Tab und wandle eine Datei um. Du wirst sehen, wie die Seite und der WASM-Codec einmal herunterladen. Du wirst nicht sehen, wie dein Bild hochgeht. Noch besser: Lade die Seite, schalt dein WLAN aus, und wandle trotzdem etwas um. Es funktioniert weiter, weil alles, was es braucht, schon auf deiner Maschine ist. Ein Tool, das deine Dateien hochlädt, kann das nicht. Dieses kann es.
Die eine echte Grenze
Ich habe Ehrlichkeit versprochen, hier ist sie also. Die Umwandlung auf deinem eigenen Gerät auszuführen heißt, sie nutzt deinen eigenen Speicher, und ein Browser-Tab bekommt keinen unendlichen Speicher zum Spielen.
Für normale Dateien — Fotos, Screenshots, Logos, das Zeug, das Leute den ganzen Tag umwandeln — ist das kein Thema. Aber wenn du etwas wirklich Gewaltiges hineinwirfst, ein einzelnes Bild in extremer Auflösung oder eine riesige Charge auf einmal, kannst du an die Decke stoßen. Ein Bild zu dekodieren heißt, seine unkomprimierten Pixel im Speicher zu halten, was weit größer ist als die Datei auf der Platte, und ein Riesenbild kann erschöpfen, was dem Tab erlaubt ist. Wenn das passiert, verlangsamt sich die Umwandlung zum Kriechen oder der Tab gibt auf.
Ein Server mit 64 GB RAM hat dieses Problem nie. Hier ist also der Tausch, klar gesagt: Ein serverseitiger Konverter kann Dateien durchkauen, die größer sind, als dein Gerät je bewältigen könnte. Dieser Ansatz kann das nicht. Was er dir im Gegenzug gibt, ist, dass deine Datei nie deine Hände verlässt. Für die überwältigende Mehrheit dessen, was Leute tatsächlich umwandeln, ist das ein Tausch, den man ohne zweiten Gedanken macht. Für eine seltene Monster-Datei ist es eine echte Grenze, und ich sage es dir lieber, als sie wegzureden.
Warum ich es trotzdem für den richtigen Standard halte
Die meisten Umwandlungen sind gewöhnliche Dateien, die von vornherein nie einen Server berühren mussten. Der Upload war immer ein Überbleibsel aus einer Zeit, in der Browser diese Arbeit nicht selbst leisten konnten. Jetzt können sie es. Also kippte der vernünftige Standard: Behalte die Datei auf deiner Maschine, mach die Arbeit lokal, und greif nur zum Server bei der seltenen Gelegenheit, wo deine eigene Hardware wirklich nicht mitkommt.
Das ist die ganze Idee hinter allem hier. Es ist dieselbe Seite, die ich nach jenem einen unbehaglichen Nachmittag für mich selbst gebaut habe, damit ich nie wieder ein persönliches Foto einem Fremden geben muss, nur um seine Dateiendung zu ändern. Es stellte sich heraus, ich musste es nie. Du auch nicht.
Ähnliche Beiträge
Warum ich PNG in WebP umwandle (und das eine Mal, wo ich es nicht tue)
PNG ist ein brillantes Format zum Bearbeiten und ein verschwenderisches zum Ausliefern. Hier steht, was WebP dir wirklich spart, wo es dir nichts bringt, und die eine Regel, die ich nie breche.
PNG oder JPG? Die Zehn-Jahre-Regel, mit der ich entscheide
Verlustfrei gegen verlustbehaftet, Kanten gegen Fotos, Transparenz gegen keine. Eine einfache Frage sagt dir, welches Format eine Datei sein sollte — mit echter Größentabelle als Beweis.
Warum deine iPhone-Fotos HEIC sind (und wann du einfach JPG nimmst)
HEIC ist ein wirklich besseres Format, das das halbe Web bis heute nicht öffnen kann. Warum Apple es gewählt hat, was du beim Umwandeln in JPG wirklich aufgibst, und wann ich es lasse.
Alle Beiträge