So funktioniert es
Was mit Ihrer Datei passiert und wie Sie die Einstellungen wählen
Jedes Dekodieren, Skalieren und Kodieren findet auf Ihrem Gerät statt. Hier ist, was jeder Schritt tut, was jede Einstellung ändert und wo das Werkzeug endet.
1. Ihr Browser liest die Datei
Die Ablage übergibt die Datei an die File API und dann an einen Web Worker auf diesem Gerät. Es gibt keinen Upload-Schritt.
2. Ein Codec arbeitet auf den Pixeln
WebAssembly-Module aus MozJPEG, Squooshs PNG-Codec, oxipng, libwebp und libavif dekodieren und kodieren das Bild außerhalb des Hauptthreads, und Rust-Portierungen skalieren es, sodass die Seite bedienbar bleibt. Jedes Modul trägt seine eigene Lizenz, und die Nachweise-Seite listet sie auf.
3. Sie laden das Ergebnis herunter
Jede fertige Datei bekommt ihren eigenen Download-Link, ihre Größe vorher und nachher und eine Vorschau dessen, was Sie bekommen.
Wo die Arbeit stattfindet
Ihre Datei erreicht nie einen Server, und das Ergebnis auch nicht. Die Seite liest die Datei mit der File API, die dem Browser einen Zugriff auf Bytes gibt, die bereits auf Ihrer Platte liegen; sie lädt sie nicht hoch. Diese Bytes gehen an einen Web Worker, einen Hintergrund-Thread, damit ein langer Stapel nicht die Seite einfriert, die Sie lesen. In diesem Worker verwandeln die Codecs Ihr Bild in einfache 8-Bit-Pixel, skalieren es, wenn Sie das verlangt haben, und kodieren das Ergebnis im gewählten Format.
Die Codecs sind WebAssembly-Module, gebaut aus MozJPEG, Squooshs PNG-Codec, oxipng, libwebp und libavif, dazu Rust-Portierungen für den Skalierschritt. Die Nachweise-Seite listet jedes einzelne mit seiner eigenen Lizenz auf, weil die Lizenz eines Wrapper-Pakets nicht die Lizenz des Codecs ist. Ein Modul wird von dieser Site geladen, wenn Sie sein Format zum ersten Mal benutzen, und deshalb ist die erste Konvertierung in einem Format langsamer als die danach. Nichts wird von woanders geladen, und keine Anfrage trägt Ihre Datei.
Eine Qualität wählen
Die Qualität ist eine ganze Zahl von 1 bis 100 und beginnt bei 75. Sie gilt für JPEG, WebP und AVIF, und alle drei sind verlustbehaftet: eine niedrigere Zahl gibt weniger Bits an das Bild, eine höhere mehr. PNG ist verlustfrei, also ignoriert es die Einstellung vollständig, und das Werkzeug sagt das, solange PNG gewählt ist.
Kein Ende der Skala ist kostenlos. Bei 1 behält das Bild seine Form und verliert sein Detail, und wohin dieses Detail zuerst verschwindet, hängt vom Bild und vom Encoder ab, deshalb verspricht diese Seite keine Reihenfolge. Bei 100 ist die Datei groß und trotzdem nicht ganz das Original, weil der Encoder das Bild aus einer komprimierten Beschreibung neu aufbaut. Wenn Sie nicht wissen, wo Sie anfangen sollen, lassen Sie den Wert bei 75 und vergleichen Sie die beiden Vorschauen, die jede fertige Zeile zeigt: die links ist die Datei, die Sie gewählt haben, die rechts ist das, was Sie herunterladen.
Eine Größe wählen
Skalieren ist aus, bis Sie es einschalten. Nach Breite ist die Ausgabe so viele Pixel breit und behält die Proportionen des Bildes, so kommt ein 3:2-Foto mit einer Breite von 1280 als 1280 mal 853 heraus. Nach Prozent werden beide Seitenmaße zu diesem Anteil am Original. Das Prozentfeld endet bei 100, der Prozentmodus kann also ein Bild nicht vergrößern; eine Breite über dem Original vergrößert es, was selten eine Datei kleiner macht und weshalb das Prozentfeld das sicherere der beiden ist.
Hat Ihre Kamera eine Drehung in der Datei gespeichert, wird diese Drehung auf die Pixel angewendet, bevor alles andere passiert, sodass ein Foto im Hochformat richtig herum herauskommt. Die vier Orientierungen, die eine Vierteldrehung enthalten, also EXIF 5 bis 8, vertauschen außerdem die Breite und die Höhe, sodass ein mit 6 gekennzeichnetes Foto 400 mal 600 herauskommt aus einer Datei, deren Zahlen 600 mal 400 lauten. Die anderen vier lassen beide Zahlen stehen, wie sie waren: gar keine Änderung, die beiden Spiegelungen und die 180-Grad-Drehung, die das Bild auf die Seite dreht, ohne es höher oder breiter zu machen.
Ein Eingabeformat bringt diese Drehung überhaupt nicht in das Werkzeug: Der EXIF-Block einer AVIF-Eingabe wird nicht gelesen, eine AVIF-Datei, die eine Orientierung speichert, wird also so benutzt, wie sie gespeichert ist, mit den Maßen, die ihre Datei angibt.
Eine Größengrenze treffen
Formulare und Server wollen oft eine Datei unter einer bestimmten Anzahl Kilobytes und nicht bloß kleiner. Das Feld für die Zielgröße nimmt diese Zahl in KiB an, also 1024 Bytes und nicht 1000, und das Werkzeug arbeitet auf sie zu: Liegt die erste Kodierung über der Zahl, senkt es die Qualität, bis hinunter zu 1, bis die Datei passt, und kommt die erste Kodierung weit unter der Zahl heraus, erhöht es die Qualität ab Ihrer Einstellung, niemals über 100, und sucht die höchste Qualität, die noch passt. Die Zeile sagt Ihnen danach, ob die Datei, die Sie bekommen, an Ihrem Ziel liegt oder darunter.
Drei ehrliche Grenzen. Die Suche kann nur Qualität ausgeben, und nur die Suche nach oben ist durch Ihre Einstellung begrenzt, also erreicht ein Bild, das bei Qualität 1 noch über dem Ziel liegt, es nicht, und was Sie dann bekommen, ist die Kodierung mit Qualität 1. In die andere Richtung kann ein Ziel über dem, was Qualität 100 für dieses Bild erreichen kann, nicht gefüllt werden, indem Sie die Datei größer machen, weil die Skala bei 100 endet: Sie bekommen die größte Datei, die das Format gemacht hat, und die liegt immer noch unter Ihrer Zahl, und die Zeile meldet das Ziel als erreicht, weil die Datei an der Obergrenze oder darunter liegt. Und PNG ignoriert die Qualitätseinstellung, also hat die Suche dort nichts auszugeben: Eine PNG-Ausgabe bekommt trotzdem einen zweiten Durchgang durch oxipng, der weniger Bytes zurückgeben kann als die erste Kodierung, sodass ein PNG-Ziel, das die erste Kodierung verfehlt hat, trotzdem erreicht werden kann, und eines, das keiner der beiden Durchgänge erreicht, wird als verfehlt gemeldet.
Ein Ziel ist eine Obergrenze mit einem Boden bei 95% davon, keine Größe, die man anpeilt. Die Qualität bewegt sich in ganzen Zahlen, und ein Schritt kann über das ganze Band springen, also zielt die Suche auf das Band und landet darin, wenn ein Schritt hineinfällt, und gibt die nächstliegende Kodierung unter Ihrem Ziel zurück, wenn keiner hineinfällt. Sie verspricht keine genaue Größe und keine Datei innerhalb von 5% Ihrer Zahl, und die Zahl, die sie meldet, ist die Frage, ob die Datei, die sie Ihnen gleich geben wird, an Ihrem Ziel liegt oder darunter.
Auf diesem letzten Satz beruht das Urteil. Die Bytes werden gezählt, nachdem ein EXIF-Block hineingeschrieben wurde, also sagt die Zeile, wenn Sie das Behalten der Metadaten wünschen und der Block die Datei über Ihr Ziel hebt, dass das Ziel verfehlt wurde, obwohl die Kodierung allein darunter lag. Sie werden nie hören, dass eine Grenze eingehalten wurde, wenn die Datei, die Sie herunterladen, darüber liegt.
Wann eine Datei abgelehnt wird
Die zwei Grenzen werden zu verschiedenen Zeitpunkten geprüft, und der Unterschied lohnt sich zu kennen. Eine Datei über 32 MiB wird schon wegen ihrer Größe abgewiesen, bevor ihre Bytes überhaupt gelesen werden, sie kostet also nichts. Eine Datei über 40.000.000 Pixel muss zuerst vollständig gelesen werden, weil ihre Pixelanzahl erst bekannt ist, wenn ihr Kopf gelesen wurde, ein zu großes Bild wird also gelesen und dann abgewiesen, bevor irgendetwas seine Pixel dekodiert.
Die Zeile nennt die Grenze, die sie abgewiesen hat, so oder so. Eine abgelehnte Datei hält den Stapel nie auf: jede andere Datei, die Sie gewählt haben, wird fertig. Keine der beiden Grenzen hängt von der Maschine ab, auf der Sie arbeiten. Es sind feste Zahlen und keine Speicherablesung, ein schnellerer oder kleinerer Rechner hebt sie also nicht auf. Was sie verändert, ist die Eingabe: schneiden Sie das Bild zu, verkleinern Sie es anderswo oder teilen Sie die Arbeit auf und wählen Sie die Dateien dann erneut (die Auswahl ersetzt die Liste).
Eine Eingabe, die das Werkzeug überhaupt nicht dekodieren kann, weil sie beschädigt oder abgeschnitten ist, bekommt eine Zeile, die das an derselben Stelle sagt. Eine verschlüsselte Datei lässt sich hier nicht öffnen: es gibt kein Kennwortfeld, und kein Teil Ihrer Datei wird irgendwohin geschickt, um sie zu entsperren.
Ein Fehlerfall betrifft den Browser statt des Bildes. Lässt sich der Worker, der eine Datei konvertiert, nicht starten oder stirbt er unterwegs, bekommt diese Datei eine Zeile, die sagt, der Browser konnte die Bild-Engine nicht ausführen, und dieser Worker nimmt keine weiteren Dateien an. Die anderen Worker machen mit dem Rest der Warteschlange weiter, und Zeilen, die schon fertig waren, behalten ihre Ergebnisse. Schlägt jeder Worker fehl, bekommt jede Datei, die nicht schon begonnen hat, dieselbe Zeile, statt zu warten: Der Durchlauf endet mit einer Antwort für jede, statt an den Dateien zu hängen, die kein Worker mehr erreicht. Eine Datei, die nur nicht dekodiert oder kodiert werden kann, ist nicht dieser Fall: Das ist der Fehler dieser einen Zeile, und der Worker, der ihn gemeldet hat, geht zur nächsten Datei. Versuchen Sie eine aktuelle Version von Chrome, Firefox, Edge oder Safari.
Bereit, es mit Ihren eigenen Bildern zu versuchen?
Das Werkzeug steht auf der Startseite. Legen Sie ein paar Dateien ab und vergleichen Sie die Größen nebeneinander.