Warum Server-Dienste Limits haben — und wir nicht
„Maximal 20 Bilder", „nur 5 MB pro Datei" — solche Grenzen kennt man von Online-Diensten. Der Grund ist wirtschaftlich: Jedes hochgeladene Bild kostet den Anbieter Bandbreite und Rechenzeit auf dem Server, und beides muss er begrenzen. Bei uns läuft die Verarbeitung auf deinem Gerät — deshalb kostet uns das 50. Bild genauso viel wie das erste: nichts. Es gibt schlicht keinen Grund für ein Limit. Warum das grundsätzlich so gebaut ist, steht im Werkstatt-Bericht zur Browser-lokalen Architektur.
Schritt 1: viele Dateien annehmen
Der Anfang ist die Drop-Zone. Sie akzeptiert nicht nur eine Datei, sondern eine ganze Auswahl — ob per Drag-and-drop mehrerer Dateien oder über den Datei-Dialog. Technisch kommt eine FileList herein, die wir in ein normales Array verwandeln, um bequem darüber iterieren zu können:
const dateien = Array.from(fileList);Ab hier ist der Stapel einfach eine Liste, die wir abarbeiten. Ungültige Typen (etwa ein PDF im Bild-Stapel) werden dabei gleich aussortiert.
Schritt 2: nacheinander verarbeiten
Jedes Bild durchläuft dieselbe Kette wie ein Einzelbild: einlesen, auf ein Canvas zeichnen, in der Zielgröße und -qualität neu kodieren. Wir arbeiten die Bilder nacheinander ab, nicht alle gleichzeitig — das hält den Speicherbedarf im Rahmen. Denn ein Bild belegt beim Verarbeiten im Speicher ein Vielfaches seiner Dateigröße (ein 4-MB-JPG entpackt zu vielen Megabyte roher Pixel). Fünfzig davon parallel würden schwächere Geräte überfordern; nacheinander bleibt jedes einzelne handhabbar, und ein Fortschrittsbalken zeigt, wo der Stapel gerade steht.
Schritt 3: alles in ein ZIP packen
Fünfzig einzelne Download-Dialoge wären eine Zumutung. Deshalb sammeln wir die fertigen Bilder und packen sie in ein einziges ZIP-Archiv — und zwar im Browser, mit einer JavaScript-ZIP-Bibliothek, ohne dass je ein Server beteiligt ist. Das ZIP entsteht im Arbeitsspeicher, wird als ein einziger Download angeboten, und der Nutzer hat alle Ergebnisse gebündelt beisammen. Dieselbe Technik erzeugt auch das Icon-Paket des PWA-Generators.
Die eine echte Grenze
Ehrlich bleibt ehrlich: Eine Grenze gibt es doch — den Arbeitsspeicher deines Geräts. Auf einem starken Rechner sind hunderte Bilder kein Problem; ein älteres Smartphone kann bei sehr großen Mengen sehr großer Bilder an seine Grenzen kommen, weil der Browser-Tab nur begrenzt Speicher bekommt. Das ist aber eine Geräte-Grenze, keine künstlich gesetzte — und sie liegt weit über dem, was im Alltag anfällt. Wer 500 Fotos in einem Rutsch verarbeitet, teilt sie im Zweifel in zwei Stapel; bei den üblichen zehn bis fünfzig Bildern merkt man nichts davon.
Warum das mehr ist als Bequemlichkeit
Stapelverarbeitung ist nicht nur ein Komfort-Feature. Sie ist die praktische Konsequenz der Grundentscheidung: Weil kein Server im Spiel ist, entfallen Limits, Wartelisten und Upload-Zeiten. Fünfzig Bilder komprimieren dauert so lange, wie dein Gerät zum Rechnen braucht — und keine Sekunde länger fürs Hochladen. Das ist der Unterschied, den man erst schätzt, wenn man einmal einen ganzen Urlaubsordner auf einmal verkleinert hat.